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', }, } }