Para obtener un cursor en Django que hago:Usando dict_cursor en Django
from django.db import connection
cursor = connection.cursor()
¿Cómo puedo obtener un cursor dict en Django, el equivalente a -
import MySQLdb
connection = (establish connection)
dict_cursor = connection.cursor(MySQLdb.cursors.DictCursor)
¿Hay una manera de hacerlo esto en django? Cuando probé cursor = connection.cursor(MySQLdb.cursors.DictCursor)
obtuve un Exception Value: cursor() takes exactly 1 argument (2 given)
. ¿O debo conectarme directamente con el controlador python-mysql?
Los documentos sugieren usar 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()
]
¿Existe una diferencia de rendimiento entre el uso de esto y crear un dict_cursor?
Sólo un lado interesante Nota. La expresión (x.name para x en cursor.description) produce un generador, no un objeto de lista. Tal generador se agotará después de la primera iteración del ciclo "para la fila en el cursor". Para que este ejemplo de código funcione en varias filas, debemos precargar las columnas cambiando los corchetes a corchetes: [x.name for x in cursor.description] –