Django中使用原生sql

在Django中使用原生Sql主要有以下几种方式:

一:extra:结果集修改器,一种提供额外查询参数的机制

二:raw:执行原始sql并返回模型实例

三:直接执行自定义Sql

使用extra:(依赖于model)

1:Book.objects.filter(publisher__name='广东人员出版社').extra(where=['price>50'])

        Book.objects.filter(publisher__name='广东人员出版社',price__gt=50)

2:Book.objects.extra(select={'count':'select count(*) from hello_Book'})


使用raw:(依赖于model)

Book.objects.raw('select * from hello_Book')


自定义sql:(不依赖于model)

Book.objects.raw("insert into hello_author(name) values('测试')")

rawQuerySet为惰性查询,只有在使用时生会真正执行


执行自定义sql:

from django.db import connection

cursor=connection.cursor()

#插入操作

cursor.execute("insert into hello_author(name) values('郭敬明')")

#更新操作

cursor.execute('update hello_author set name='abc' where name='bcd'')

#删除操作

cursor.execute('delete from hello_author where name='abc'')

#查询操作

cursor.execute('select * from hello_author')

raw=cursor.fetchone() #返回结果行游标直读向前,读取一条

cursor.fetchall() #读取所有

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相信现在很多年轻人都经历过裸辞,再找到满意的工作可能已经过了三个月,甚至半年了。 也有些人因为个人原因或者家庭上面...
    职场一休阅读 9,976评论 0 1
  • 你不用在我的诗歌面前顿足 我的梦 不需要同情 另外,我也不在用你的名字作我诗歌的标题 我的眼里有你 生活,是你放在...
    江城妖怪阅读 1,339评论 0 0
  • “学习雷锋好榜样,忠于革命忠于党,意志坚定不忘本,立场坚定斗志强……立场坚定斗志强!!!” 居然不自觉想起了这个旋...
    抒灵阅读 1,813评论 1 1