一、概念与原理
ORM:对象关系映射,在项目与数据库之间起桥梁作用。
Django’s ORM工作原理:Django内嵌了ORM框架,使得无需面向数据库编程,而是定义模型类,通过模型类和对象完成对表的操作(创建、修改、删除)和对数据(增删改查)的操作。根据配置的数据库引擎,翻译成对应的SQL语句。我们无需关心所使用的是哪个数据库及其底层原理,如果数据库迁移,只需要更换相应的数据库引擎即可。
二、使用准备
说明:以下使用的数据库为MySQL,第三方工具为pymysql
1. 创建数据库
2. 在setting.py下,修改Django项目使用的数据库(默认:SQLlite,修改为:MySQL)
DATABASES = { |
3. 在__inti__.py下,修改连接数据库的第三方工具(默认:mysqldb,修改为:pymysql)
import pymysql |
4. 在setting.py下,注册app
INSTALLED_APPS = [ |
5. 在models.py下,创建表结构(可随时修改)
from django.db import models |
6. 在终端中键入命令,生成数据表
python manage.py makemigrations // 根据models.py中的类,在migrations中生成相关文件 |
三、支持字段
字符串类:
EmailField(CharField) |
时间类:
DateTimeField(DateField) |
数字类:
SmallIntegerField(IntegerField) |
枚举:
color_list = ( |
字段参数
null=True, |
四、基本操作
1. 增删改查
# 增加 |
2. 正向连表和反向连表
''' |
3. 取得不同的数据类型对应不同的连表查询方式
# 1. 取得对象[obj,obj,obj] |
五、进阶操作
1. 排序
user_list = models.UserInfo.objects.all().order_by('id') |
2. 分组
v = models.UserInfo.objects.values('ut_id') |
3. F操作:获取字段的值
# F操作 |
4. Q操作:用于构造复杂查询的条件
# Q操作 |
5. extra操作:额外查询条件以及相关表,排序
# extra |
六、其他
1. 多对多的处理方式:ManytomanyField、自定义关系表、混合
# M2M自关联特性 |
2. 遇到ORM无法解决的数据库语句可用原生sql语句
# 执行原生SQL |
3. 不同数据源的语句有略微的差异
# 数据源:mysql等 |