Django基础-Model数据库模型

数据库配置

连接数据库

Django 默认支持sqlite,mysql,oracle,postgresql数据库

  • Django默认使用sqlite数据库,自带sqlite数据库驱动,引擎名称:django.db.backends.sqlite3
  • mysql数据库引擎名称:django.db.backends.mysql

mysql驱动程序

一般python2用MySQLdb,python3用PyMySQL

  • MySQLdb(mysql python)
  • mysqlclient
  • MySQL
  • PyMySQL(纯python的mysql驱动程序)

Django的setting中配置数据库(默认配置)

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中配置应用信息

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中创建和配置数据库表信息

class Text_Tab(models.Model):                   # 创建名称为 Text_Tab 的表
    user = models.CharField(max_length=18,)     # 创建名称为 user 的数据表字段,数据类型是字符串,数据最大长度为18字符

==注意,没有设置主键的情况下字段不能使用id,系统会自动生成一个自增名称为id的字段==

数据类型表

类型释义
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基础-数据类型和参数表》

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安装

下载安装mysqlclient

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',
        },
    }
}
    原文作者:数据库基础
    原文地址: https://my.oschina.net/u/2924779/blog/1936845
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞