Tags : Ajax  apache  awk  besttrace  bootstrap  CDN  Django  git 

常见问题

Django 执行原始SQL

stevezhou      2015.01.24   


Django有两种方式可执行原始SQL:

1、Manager.raw(查询SQL):执行原始查询并返回模型实例,但不能直接执行UPDATE, INSERT, DELETE等操作。

   例1:基本用法

Classify.objects.raw("select * from wordbank_classify")

Classify.objects.raw("select * from wordbank_classify")[0] #获取结果中第一个元素

    例2:使用参数

d='2014-01-01'
#注意这里的参数一定是个列表形式,不能是格式化字符
Classify.objects.raw('select * from wordbank_classify where createdate>%s',[d]) 

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

form django.db import connection,transaction
django.db.connection:代表默认的数据库连接
django.db.transaction:代表默认数据库事务(transaction)
connection.cursor(): 获得一个游标(cursor)对象
cursor.execute(sql, [params]):执行SQL
cursor.fetchone() 或者 cursor.fetchall():返回结果行
如果执行修改操作,则调用transaction.commit_unless_managed()来保证你的更改提交到数据库。



标签 :  Django 上一篇     下一篇