设为首页 加入收藏

TOP

Python Django直接执行sql语句
2015-08-31 21:24:39 来源: 作者: 【 】 浏览:31
Tags:Python Django 直接 执行 sql 语句

Django提供两种方式执行(performing)原始的SQL查询:


(1)?、?Manager.raw()?:执行原始查询并返回模型实例


(2)?、?Executing custom SQL directly?:直接执行自定义SQL,这种方式可以完全避免数据模型,而是直接执行原始的SQL语句。


三、raw()方法


The?raw()?manager method can be used to perform raw SQL queries that return model instances:?
Manager.?raw?(?raw_query?,?params=None?,?translations=None?)


用法:?


?注意,原始SQL里的model,如果在?db_table?没有定义,则使用app的名称,后面下划线 后面接模型类的名称,如"Myblog_New";上面的例子,在定义类的时候已经这样处理了:


?2、查询字段隐射到模型字段(Mapping query fields to model fields)


raw()?automatically maps fields in the query to fields on the model.并且是通过名称来匹配,这意味着我们可以使用SQL子句(clause)


?返回一个RawQuerySet对象


3、索引查找(Index lookups)


4、延迟模型字段(Deferring model fields)


Fields may also be left out(left out:忽视,不考虑;被遗忘),这意味着该字段的查询将会被排除在根据需要时的加载。


?这个例子其实检索了三个字段,一个主键(必需)、一个原始SQL字段、一个需求字段。这里主键字段不能省略,否则??出错,如下:?


5、传递参数(Passing parameters into?raw()?)


如果需要执行参数化查询,您可以使用params参数原始()?


注意两点:?(1)、


(2)、必须使用[参数],否则出错:?
? ? ? ? ? ? ? ? (3)、这种方式不对:


?四、直接执行自定义SQL


Manager.raw()?远远不够,可直接执行自定义SQL,directly execute?UPDATE?,?INSERT?, or?DELETE?queries.


? django.db.connections?:针对使用多个数据库


?通常我们不需要手动调用?transaction.commit_unless_managed(?),我们可以这样做:


下面关于Python的文章您也可能喜欢,不妨看看:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python Django模型内部类meta详解 下一篇Android自定义UI模板图文详解【附..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: