django中的資料庫CURD基本命令
阿新 • • 發佈:2019-01-03
配置資料庫
資料庫的在settings.py中,django的預設資料庫配置使用的是sqlite.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
安裝驅動
pip install PyMsql
初始化連結
在django的工程同名目錄下的__init__.py的檔案中新增程式碼
from pymsql install_as_MySQLdb install_as_MySQLdb()
這部分的程式碼作用是讓django的ORM能以mysqldb的方式來呼叫PyMySQL
修改配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', # 資料庫主機 'PORT': 3306, # 資料庫埠 'USER': 'root', # 資料庫使用者名稱'PASSWORD': 'mysql', # 資料庫使用者密碼 'NAME': 'django_demo' # 資料庫名字 } }
建立對應資料庫
create database django_demo default charset=utf8;
定義模型類
- 模型類被定義在models.py 檔案中.
- 模型類必須繼承自Model類,包位於:django.db.models中.
from django.db import models #定義圖書模型類BookInfo
模型類如果未指明表名,Django預設以 小寫app應用名_小寫模型類名 為資料庫表名。也可通過db_table來指定資料表名.
關於主鍵
django會為表建立自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設定某屬性為主鍵列後django不會再建立自動增長的主鍵列。 預設建立的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。
欄位命名規範
不能是python的保留關鍵字。 不允許使用連續的下劃線.
欄位型別
欄位 | 說明 |
AutoField | 自動增長的IntegerField,通常不用指定,不指定時Django會自動建立屬性名為id的自動增長屬性 |
BooleanField | 布林欄位,值為True或False |
NullBooleanField | 支援Null、True、False三種值 |
CharField | 字串,引數max_length表示最大字元個數 |
TextField | 大文字欄位,一般超過4000個字元時使用 |
IntegerField | 整數 |
DecimalField | 十進位制浮點數, 引數max_digits表示總位數, 引數decimal_places表示小數位數 |
FloatField | 浮點數 |
DateField | 日期, 引數auto_now表示每次儲存物件時,自動設定該欄位為當前時間,用於"最後一次修改"的時間戳,它總是使用當前日期,預設為False; 引數auto_now_add表示當物件第一次被建立時自動設定當前時間,用於建立的時間戳,它總是使用當前日期,預設為False; 引數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤 |
TimeField | 時間,引數同DateField |
DateTimeField | 日期時間,引數同DateField |
FileField | 上傳檔案欄位 |
ImageField | 繼承於FileField,對上傳的內容進行校驗,確保是有效的圖片 |
欄位屬性
選項 | 說明 |
null | 如果為True,表示允許為空,預設值是False |
blank | 如果為True,則該欄位允許為空白,預設值是False |
db_column | 欄位的名稱,如果未指定,則使用屬性的名稱 |
db_index | 若值為True, 則在表中會為此欄位建立索引,預設值是False |
default | 預設 |
primary_key | 若為True,則該欄位會成為模型的主鍵欄位,預設值是False,一般作為AutoField的選項使用 |
unique | 如果為True, 這個欄位在表中必須有唯一值,預設值是False |