很多时候执行sql语句,数据比django的model来的快,但并不想关心返回的字段,例如你可以执行:select * from product这种sql,这里个方法将会返回与数据库列名相同的键值对 ,格式是这样子的:
result = [{“id”:1,”name”:”product1”},{“id”:2,”name”:”product2”}]
当然你还可以
import json
json.dumps(result )
返回一串json数据,是不是很完美。。。。
# coding:utf-8
from django.db import connection, transaction
'''执行django原始sql语句 并返回一个数组对象'''
def executeQuery(sql):
cursor = connection.cursor() # 获得一个游标(cursor)对象
cursor.execute(sql)
rawData = cursor.fetchall()
print rawData
col_names = [desc[0] for desc in cursor.description]
print col_names
result = []
for row in rawData:
objDict = {}
# 把每一行的数据遍历出来放到Dict中
for index, value in enumerate(row):
print index, col_names[index], value
objDict[col_names[index]] = value
result.append(objDict)
return result