Django模型层的优化
首先我的最终目的是为了开发PythonDjango+微信小程序的校园应用,所以查看我这个系列就可以查看一些有用的内容,但笔记都是记录的我需要记录的一些内容,并不是整个项目的集合.
Django模型层的变更与迁移:
-
makemigration appname
-
migrate 执行到数据库
-
selmigrate appname 0014 查看执行sql语句(20条)
-
showmigration appname 显示应用变更历史和迁移历史
Django模型层-懒加载,预加载
Django模型层优化(长连接)
Django模型层数据库操作规范
-
正确使用索引
- 索引应该被索引的列
- 不索引不该被索引的列
-
使用iterator迭代器迭代QuerySet
- QuerySet非常大时,迭代器节省内存
-
理解对象的属性缓存
- 不可调用属性:就是它默认的数据不包含外键
- 可调用的属性:就是它的外键,以及多对多的数据,可以用函数调用,
- 把可调用属性赋值为Python变量,再次调用的时候,就不需要再调用数据库,而是调用Python变量的数据即可(提升性能)
-
数据库的工作交给数据库做
- 过滤:exclude,filter等属性
- 聚合:使用annotate函数聚合
- 必要的时候使用原生的SQL
-
正确检索数据
- 使用被索引 列字段检索
- 使用被unique修饰的字段检索
-
不要进行不必要的检索
- QuerySet使用Values(),Value_list()函数返回Python结构容器
- 查询结果长度使用QuerySet.count()而不是len(QuerySet)
- 判断是否为空是哟个QuerySet.exists()而不是if QuerySet
-
不要进行不必要的排序
- 不要进行不必要的排序
-
批量操作
- 大量数据,批量操作