Um einen Cursor in django ich tun bekommen:Mit dict_cursor in django
from django.db import connection
cursor = connection.cursor()
Wie würde ich einen dict Cursor in django erhalten, das entspricht -
import MySQLdb
connection = (establish connection)
dict_cursor = connection.cursor(MySQLdb.cursors.DictCursor)
Gibt es eine Möglichkeit zu tun das im Django? Als ich versuchte cursor = connection.cursor(MySQLdb.cursors.DictCursor)
Ich bekam eine Exception Value: cursor() takes exactly 1 argument (2 given)
. Oder muss ich direkt mit dem Python-Mysql-Treiber verbinden?
Die django docs dictfetchall
schlagen vor, mit:
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()
]
Gibt es einen Unterschied in der Leistung dieser zwischen der Verwendung und eine dict_cursor zu schaffen?
nur eine interessante Seite ähnlich (Django 1,11)
Offensichtlich fühlen sich frei, hat zu verwenden Hinweis. Ausdruck (x.name für x in cursor.description) erzeugt einen Generator und kein Listenobjekt. Ein solcher Generator wird nach der ersten Iteration der Schleife "for row in cursor" erschöpft sein. Um dieses Codebeispiel für mehrere Zeilen zu verwenden, müssen Spalten vorab abgerufen werden, indem Sie runde Klammern in eckige Klammern ändern: [x.name für x in cursor.description] –