Django基礎-Model數據庫模型

數據庫配置

鏈接數據庫

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

CharField(Field)
參數 釋義
max_length=None 最大長度
min_length=None 最小長度
strip=True 去除首尾空字符
empty_value='' 空值
IntegerField(Field)
參數 釋義
max_value=None 最大值
min_value=None 最小值
DecimalField(IntegerField)
參數 釋義
max_value=None 最大值
min_value=None 最小值
max_digits=None 最大位數
decimal_places=None 小數點後位數

mysqlclient安裝

下載安裝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.」==

sql語法查看

在全局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',
        },
    }
}
相關文章
相關標籤/搜索