python中使用原始生态sql语句

来源:互联网 发布:数据工程理论与技术 编辑:程序博客网 时间:2024/05/29 21:28

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

Django中几种写原生sql的方式

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

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

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

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

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

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

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

[python] view plain copy
  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命令。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 is语音注册频繁怎么办 苹果id注销了怎么办 网站突然打不开了怎么办 谷歌邮箱打不开怎么办 360借款无力承担怎么办 公司被收购期权怎么办 创业板连续亏损怎么办 国企合并后员工怎么办 资金密码忘记了怎么办? 大华电子秤称重不准怎么办 股票暂停上市散户怎么办 入股公司赔钱了怎么办 家里被虚报脱贫怎么办 技术入股想退股怎么办 想开店没有资金怎么办 想开店资金不够怎么办 要开店没资金怎么办 想开店缺少资金怎么办 刚刚开店没有资金怎么办 有专利没钱投资怎么办 肉牛养殖没资金怎么办 入股分红想撤资怎么办 入股后想退股怎么办 土地使用权到期后怎么办 员工辞职扣工资怎么办 公司老板要跑路不发工资怎么办 撤销撤多了怎么办 中葡股份跌停怎么办 厕所里有蟑螂怎么办 机票生日写错怎么办 户口出生地错了怎么办 护照号填写错误怎么办 鱼缸潜水泵声音大怎么办 股票跌到没钱了怎么办 新浪股票直播室打不开怎么办 st天业股份怎么办 日月股份破发怎么办 凌晨到达泰国机场怎么办 中介收钱不退钱怎么办 新车办行驶证怎么办 被云南信托扣款怎么办