一、概念与原理
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等  |