gpt4 book ai didi

python - 在 django 中使用 dict_cursor

转载 作者:IT老高 更新时间:2023-10-28 21:07:58 25 4
gpt4 key购买 nike

要在 django 中获取光标,我会这样做:

from django.db import connection
cursor = connection.cursor()

我如何在 django 中获得一个字典光标,相当于 -

import MySQLdb
connection = (establish connection)
dict_cursor = connection.cursor(MySQLdb.cursors.DictCursor)

有没有办法在 django 中做到这一点?当我尝试 cursor = connection.cursor(MySQLdb.cursors.DictCursor) 时,我得到了一个 Exception Value: cursor() 只需要 1 个参数(给定 2 个)。还是需要直接连接python-mysql驱动?

django 文档建议使用 dictfetchall:

def dictfetchall(cursor):
"Returns all rows from a cursor as a dict"
desc = cursor.description
return [
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]

使用它和创建 dict_cursor 之间有性能差异吗?

最佳答案

不,Django 中没有对 DictCursor 的这种支持。但是你可以为你写一个小函数。参见文档:Executing custom SQL directly :

def dictfetchall(cursor): 
"Returns all rows from a cursor as a dict"
desc = cursor.description
return [
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]

>>> cursor.execute("SELECT id, parent_id from test LIMIT 2");
>>> dictfetchall(cursor)
[{'parent_id': None, 'id': 54360982L}, {'parent_id': None, 'id': 54360880L}]

关于python - 在 django 中使用 dict_cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com