python中使用原始生态sql语句

163 篇文章 3 订阅

使用原生sql的主要目的是解决一些很复杂的sql不能用ORM的方法写出的问题。

Django中几种写原生sql的方式

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

  1. >>>> Book.objects.filter(publisher__name = '清华大学出版社').extra(where = ['price > 10']) #查找清华大学  
  1. 出版社中所有大于10元的书籍。  
# 也可以使用下面的语句
  1. >>> Book.objects.filter(publisher__name = '清华大学出版社', price__gt = 10# 意思和上一种相同  
  1. 还有其他的几种方式,不过这个不太常用,所以不多说了。  

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

  1. # 查看数据表 blog_book 中的所有的对象。  
  2. >>> b = Book.objects.raw('select * from blog_book'# raw方法返回的是RawQuerySet的对象,可迭代  
  3. >>> for i in b:  
  4.     print(i.title)</span>  
  1. raw方法貌似只能用在查询的时候  

3.直接执行自定义SQL(这种方法完全不依赖与model,前面两种方式还是要依赖于model)

其实就是用python操作数据库的方法。

如果SQL学的不错的话,强烈建立使用第三种方式来进行

  1. from django.db import connection  
  2. # 获得一个游标cursor对象  
  3. cursor = connection.cursor()  
  4. # 插入操作  
  5. cursor.execute("insert into blog_author(name) values('韩寒')")  
  6. # 更新操作  
  7. cursor.execute("update blog_author set name = '郭敬明' where name = '韩寒' ")  
  8. # 删除操作  
  9. cursor.execute("delete from blog_author where name = '郭敬明'")  
  10. # 查询操作  
  11. cursor.execute('select * from blog_author')  
  12. # 一条一条的取数据  
  13. raw = cursor.fetchone()  
  14. # 取出所有数据,以元组的形式返  
  15. cursor.fetchall()  


注意:在Django中,如果可以用orm解决的话,首选还是orm,不能解决的时候,再考虑使用原生SQL的方式。因为原生SQL就是为了弥补orm不能够很好的执行较为复杂的SQL命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值