优点 | 缺点 | |
---|---|---|
Django ORM | 快速开发、隐藏数据访问细节、避免不规范的SQL、简化迁移 | 影响性能、复杂查询效率低 |
RAW SQL | 复杂查询更灵活 | 需要检查SQL是否有问题、SQL注入漏洞 |
Django ORM高级操作:
-
Lazy load和Cache提升性能
-
defer和only
-
Django中使用原生SQL
-
News.objects.only('title').filter(tag_id=1).extra(where=['clicks>800'])
-
news = News.objects.raw('select id, title from tb_news')
-
类似pymysql操作
from django.db import connection cursor = connection.cursor() cursor.execute("select id, title from tb_news") cursor.fetchall()
-
-
select_related关联查询
-
using 多个数据库时控制QuerySet在哪个数据库上操作