国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Django(三)模型與數(shù)據(jù)庫(kù)

前言

各環(huán)境等的使用版本如下:
Linux Mint 18.2 (Ubuntu 16.04);
python版本2.7.12和3.5.2;
Django版本為1.9;
MySQL版本5.7.20。

Django 模型是與數(shù)據(jù)庫(kù)相關(guān)的,通過(guò)模型來(lái)操作數(shù)據(jù)庫(kù),與數(shù)據(jù)庫(kù)相關(guān)的代碼一般寫在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等數(shù)據(jù)庫(kù),只需要在settings.py中配置即可。Django 為這些數(shù)據(jù)庫(kù)提供了統(tǒng)一的調(diào)用API。 我們可以根據(jù)自己業(yè)務(wù)需求選擇不同的數(shù)據(jù)庫(kù)。MySQL 是 Web 應(yīng)用中最常用的數(shù)據(jù)庫(kù)。以下將以 MySQL 作為實(shí)例進(jìn)行介紹。

MySQL安裝

安裝

首先打開終端,然后執(zhí)行下面的三條命令完成安裝:

sudo apt-get install mysql-serversudo apt isntall mysql-clientsudo apt install libmysqlclient-dev

安裝成功后可以通過(guò)下面的命令測(cè)試是否安裝成功:

sudo netstat -tap | grep mysql

出現(xiàn)如下信息證明安裝成功:

然后執(zhí)行下述命令進(jìn)入MySQL服務(wù)shell:

mysql -uroot -p

在Enter password:后輸入你設(shè)置的密碼就可以進(jìn)入MySQL服務(wù),如下圖建立一個(gè)名叫demo的數(shù)據(jù)庫(kù),注意加分號(hào):

  • 使用

打開終端,“ mysql -uroot -p”連接到數(shù)據(jù)庫(kù),然后你就可以建立數(shù)據(jù)庫(kù),建表,增刪改查一系列數(shù)據(jù)庫(kù)操作了。
然后在pycharm中就可以實(shí)現(xiàn)MySQL可視化了,打開后點(diǎn)擊View—>Tool Windows—>Database

在彈出的視圖里點(diǎn)擊如下的綠色+號(hào)—>Data Source—>MySQL,出現(xiàn)如下圖,然后填寫信息,點(diǎn)擊Test Connection測(cè)試連接,再點(diǎn)擊Apply就ok,剛開始需要在最下面點(diǎn)擊以下下載文件才能測(cè)試連接。

數(shù)據(jù)庫(kù)配置

文件配置

Django的模型版塊是可以實(shí)現(xiàn)根據(jù)模型建立數(shù)據(jù)庫(kù)表的,我們需要告訴Django使用哪一種數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)的用戶密碼等信息以連接數(shù)據(jù)庫(kù)。

打開第二層demo目錄下的settings.py文件并做修改(name為你的數(shù)據(jù)庫(kù)名稱,后面的參數(shù)就是你的數(shù)據(jù)庫(kù)配置的用戶名、密碼和端口信息了):

# Database# https://docs.djangoproject.com/en/1.9/ref/settings/#databasesDATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'NAME': 'demo',        'USER':'root',        'PASSWORD':'password',        'HOST':'localhost',        'PORT':'3306',    }}

首先你得建一個(gè)數(shù)據(jù)庫(kù)名為demo,打開終端,輸入“mysql -uroot -p”輸入密碼進(jìn)入mysql服務(wù)shell,然后創(chuàng)建數(shù)據(jù)庫(kù)(注意如果你得數(shù)據(jù)庫(kù)要存漢字,那就加上后面的參數(shù),是utf8不是utf-8也不是utf_8):

create database demo default charset=utf8;

app模型完成

到這里我們可以不用在終端上用mysql服務(wù)創(chuàng)建表,django的模型會(huì)自動(dòng)的操作表,所以我們只需要寫好模型就行了。

我們?cè)谥敖⒌拿麨閘ogin的app中完成模型,在login目錄下的models.py中修改為如下:

# _*_ coding:utf-8 _*_from __future__ import unicode_literalsfrom django.db import models# Create your models here.class Types(models.Model):    name = models.CharField(max_length=20)    types = models.IntegerField(default=4)    def __str__(self):        return self.nameclass Members(models.Model):    name = models.CharField(max_length=20)    sex = models.CharField(max_length=2)    age = models.IntegerField(null=True)    TEL = models.CharField(max_length=11)    nickname = models.CharField(max_length=20)    password = models.CharField(max_length=15)    # create_time = models.DateTimeField()    member_type = models.ForeignKey(Types)    def __str__(self):        return self.name

我們新建了一個(gè)Types類和Members類,都繼承自models.Model, 一個(gè)成員有姓名、年齡、性別、注冊(cè)昵稱、登錄密碼、成員類型;一個(gè)類型包括了類型名稱和類型編號(hào)(比如超級(jí)管理員、管理員、會(huì)員、普通成員、游客等類型,每個(gè)類型都對(duì)應(yīng)一個(gè)編號(hào))。繼承自models.Model的類,django都會(huì)將其同步到數(shù)據(jù)庫(kù),每個(gè)類在數(shù)據(jù)庫(kù)中對(duì)應(yīng)一個(gè)表。

到這里我們還得做一件事,那就是安裝pymsql,打開終端(你python用哪一個(gè)版本就安裝哪一個(gè)):

sudo pip install pymysqlsudo pip3 install pymysql

然后打開login應(yīng)用下的init.py文件,添加如下語(yǔ)句:

import pymysqlpymysql.install_as_MySQLdb()

目的是告訴django把pymysql當(dāng)做MySQLdb來(lái)使用,如果不添加這個(gè)會(huì)報(bào)找不到MySQLdb的錯(cuò)誤,當(dāng)然你也可以安裝MySQLdb,但是不建議,因?yàn)镸ySQLdb已經(jīng)不更新維護(hù)了。
這里用到了兩種Field,F(xiàn)ield類型后面章節(jié)再講述。

然后將login應(yīng)用下的views.py文件修改如下:

# _*_ coding:utf-8 _*_from django.shortcuts import render# Create your views here.from login import modelsdef home(request):    context = {}    models.Types.objects.create(name='超級(jí)管理員', types=0)    type = models.Types.objects.get(pk=1)    models.Members.objects.create(nickname='超級(jí)管理員',                                  password='admin1234',                                  member_type=type)    models.Types.objects.create(name='管理員', types='1')    type = models.Types.objects.get(pk=2)    models.Members.objects.create(nickname='管理員',                                  password='admin1111',                                  member_type=type)    models.Types.objects.create(name='導(dǎo)師', types='2')    type = models.Types.objects.get(pk=3)    models.Members.objects.create(name='張華',                                 sex='女',                                 age='18',                                 TEL='13524654287',                                 nickname='芳@華',                                 password='zh.1998@1204',                                 member_type=type)    models.Types.objects.create(name='成員', types='3')    type = models.Types.objects.get(pk=4)    models.Members.objects.create(name='李楠',                                 sex='女',                                 age='19',                                 TEL='13425158478',                                 nickname='南方南',                                 password='LN.axp231',                                 member_type=type)    models.Types.objects.create(name='游客', types='4')    type = models.Types.objects.get(pk=5)    models.Members.objects.create(name='徐浩',                                 sex='男',                                 age='18',                                 TEL='15234585461',                                 nickname='背手',                                 password='pa7nan2.@#',                                 member_type=type)    return render(request, 'home.html', context)def login(request):    context = {}    return render(request, 'login.html', context)

上述的關(guān)于模型操作的models.Types.objects.create()和models.Types.objects.get()等將在后面章節(jié)做學(xué)習(xí)。

同步數(shù)據(jù)庫(kù)

現(xiàn)在就可以將django的login應(yīng)用模型同步到mysql數(shù)據(jù)庫(kù)了,還記得在運(yùn)行項(xiàng)目的時(shí)候出現(xiàn)的紅色的:

You have unapplied migrations; your app may not work properly until they are applied.Run 'python manage.py migrate' to apply them.

那是因?yàn)闆](méi)有同步數(shù)據(jù)庫(kù)的原因,當(dāng)時(shí)沒(méi)有用到就沒(méi)管,現(xiàn)在我們用終端進(jìn)入到項(xiàng)目的路徑,執(zhí)行下面兩條命令同步所有在settings.py中的INSTALLED_APPS中配置的應(yīng)用的模型到mysql數(shù)據(jù)庫(kù)(注意路徑,要運(yùn)行manage.py就得到它所在目錄,如果你想用python3就用后面的命令,不用去切換默認(rèn)的python版本):

# python2執(zhí)行python manage.py makemigrationspython manage.py migrate# python3執(zhí)行python3 manage.py makemigrationspython3 manage.py migrate

然后你就可以看到數(shù)據(jù)庫(kù)中多了很多個(gè)表(包括django默認(rèn)的還有我們模型中的兩個(gè)表,一個(gè)為login_members,另一個(gè)為login_types,不用說(shuō)你也能看出來(lái)djanggo同步數(shù)據(jù)庫(kù)表的命名規(guī)則是:appName_tableName)

我們?cè)诮K端運(yùn)行項(xiàng)目(前面章節(jié)講了這里就不贅述怎么運(yùn)行了,至于是要用python2還是python3自己選,和上面一樣,不要去修改默認(rèn)的python版本),打開鏈接,然后查看數(shù)據(jù)庫(kù)的login_members和login_types兩個(gè)表,會(huì)發(fā)現(xiàn)內(nèi)容寫進(jìn)去了。

可以用pycharm查看表,如下圖:

也可以在終端用mysql服務(wù)查看,注意每一個(gè)語(yǔ)句都要在后面加分號(hào):

最后講一下在終端結(jié)束mysql服務(wù)的快捷鍵ctr+d,結(jié)束django項(xiàng)目的快捷鍵ctr+c。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
004Django 模型 | 菜鳥教程
python 3.7 配置mysql數(shù)據(jù)庫(kù)
python測(cè)試開發(fā)django-77.ORM如何添加 DateTimeField 不顯示毫秒
Django 模型(數(shù)據(jù)庫(kù))
編寫你的第一個(gè) Django 應(yīng)用,第 2 部分 | Django 文檔 | Django
編寫第一個(gè)Django應(yīng)用:第一部分
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服