Django 默認支持sqlite,mysql,oracle,postgresql數據庫python
- Django默認使用sqlite數據庫,自帶sqlite數據庫驅動,引擎名稱:django.db.backends.sqlite3
- mysql數據庫引擎名稱:django.db.backends.mysql
mysql驅動程序mysql
通常python2用MySQLdb,python3用PyMySQLgit
- MySQLdb(mysql python)
- mysqlclient
- MySQL
- PyMySQL(純python的mysql驅動程序)
Django的setting中配置數據庫(默認配置)sql
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Django的setting中配置數據庫(MySQL配置)數據庫
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '數據庫名稱', 'USER': '數據庫用戶名', 'PASSWORD': '數據庫密碼', 'HOST': '主機地址', 'POST': '端口號', } }
Django的setting中配置應用信息django
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', '你的應用名稱', ]
- models.py 內的class 屬性,能夠建立預設表信息,當執行預設表信息後數據才正式添加至數據庫
- 使用 【python + Django + 數據庫類型】不兼容版本或models錯誤 可能存在No changes detected 的狀況
models類型 | 代指 |
---|---|
models類 | 代指數據庫中表 |
models字段 | 代指數據庫中的字段(列) |
models對象 | 代指數據庫中的一行記錄 |
models.py中建立和配置數據庫表信息session
class Text_Tab(models.Model): # 建立名稱爲 Text_Tab 的表 user = models.CharField(max_length=18,) # 建立名稱爲 user 的數據表字段,數據類型是字符串,數據最大長度爲18字符
==注意,沒有設置主鍵的狀況下字段不能使用id,系統會自動生成一個自增名稱爲id的字段==oracle
類型 | 釋義 |
---|---|
AutoField() | int自增列,必須填入參數primary_key=True |
BigAutoField() | bigint自增列,必須填入參數 primary_key=True |
CharField() | 字符串 |
IntegerField() | 整數 |
PositiveIntegerField() | 正整數 |
FloatField() | 浮點數 |
SmallIntegerField() | 小數 |
BinaryField() | 二進制數字 |
DecimalField() | 十進制小數 |
PositiveSmallIntegerField() | 正小數 |
BigIntegerField() | 長整型,範圍【-9223372036854775808 ~ 9223372036854775807】 |
BooleanField() | 布爾值 |
NullBooleanField() | 能夠爲空的布爾值 |
TextField() | 文本類型 |
SlugField() | 字符串類型,Django Admin和ModelForm提供 字母、數字、下劃線、鏈接符 格式驗證 |
CommaSeparatedIntegerField() | 字符串類型,格式必須爲都好分割的數字 |
EmailField() | 字符串類型,Django Admin和ModelForm提供 email 格式驗證 |
IPAddressField() | 字符串類型,Django Admin和ModelForm提供 IPv4 格式驗證 |
GenericIPAddressField() | 字符串類型,Django Admin和ModelForm提供 IPv4和IPv6 格式驗證 |
URLField() | 字符串類型,Django Admin和ModelForm提供 URL 格式驗證 |
UUIDField() | 字符串類型,Django Admin和ModelForm提供 UUID 格式驗證 |
FilePathField() | 字符串類型,Django Admin和ModelForm提供 目錄下文件讀取 |
FileField() | 字符串類型,Django Admin和ModelForm提供 路徑保存在數據庫,文件上傳到指定目錄 |
ImageField() | 字符串類型,Django Admin和ModelForm提供 路徑保存在數據庫,圖片上傳到指定目錄 |
DateField() | 日期:YYYY-MM-DD |
TimeField() | 時間:HH:MM[:ss[.uuuuuu]] |
DateTimeField() | 長日期:YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] |
ForeignKey("表2") | 一對多表 |
ToManyField("表2") | 多對多表 |
更多數據類型和數據類型參數可參考博文《Django基礎-數據類型和參數表》app
參數 | 釋義 |
---|---|
max_length=None | 最大長度 |
min_length=None | 最小長度 |
strip=True | 去除首尾空字符 |
empty_value='' | 空值 |
參數 | 釋義 |
---|---|
max_value=None | 最大值 |
min_value=None | 最小值 |
參數 | 釋義 |
---|---|
max_value=None | 最大值 |
min_value=None | 最小值 |
max_digits=None | 最大位數 |
decimal_places=None | 小數點後位數 |
下載安裝mysqlclientpost
pip install mysqlclient
==若是提示 Did you install mysqlclient? 能夠使用pymysql替代==
下載pymysql
pip install pymysql
在項目_init_.py中添加如下信息(由於系統默認引擎爲Mysqldb,如今替換爲pymysql)
import pymysql pymysql.install_as_MySQLdb()
建立預設表信息(數據庫變動文件)
python manage.py makemigrations 應用名 # 執行完成後 項目 migrations 會生成數據庫變動文件
執行預設表信息(按照數據庫變動文件建立,自動生成系統默認表)
python manage.py migrate
==注:生成數據庫表僅適用於新的數據庫,在數據庫有文件或已經有其它應用項目生成過的狀況下可能會沒法生成數據庫文件,常見終端提示信息爲:「No migrations to apply.」==
在全局setting.py設置中添加logging信息可顯示爲sql查詢語句
LOGGING={ 'version':1, 'disable_existing_loggers':False, 'handlers':{ 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers':{ 'django.bd.backends':{ 'handlers':['console'], 'propagate':True, 'level':'DEBUG', }, } }