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',
        },
    }
}
相关文章
相关标签/搜索