Django中使用原生Sql

在Django中使用原生Sql主要有以下几种方式:
一:extra:结果集修改器,一种提供额外查询参数的机制
二:raw:执行原始sql并返回模型实例
三:直接执行自定义Sql
(
这种方式完全不依赖model,前两种还是要依赖于model
)

实例:
使用extra:

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:

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

#使用 raw() 的 translations 参数来进行映射。这个参数是一个映射查询字段名称和模型字段名称的字典。
name_map = {'first': 'first_name', 'last': 'last_name', 'bd': 'birth_date', 'pk': 'id'}
Book.objects.raw('SELECT * FROM some_other_table', translations=name_map)

自定义sql:

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() #读取所有

参数查询

curr.execute("exec proc_getconflist %s, %s, %s, %s",('990003', None, None, None))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值