J'utilise Flask SQLAlchemy et j'ai le code suivant pour récupérer les utilisateurs d'une base de données via une requête SQL brute depuis une base de données MySQL :
connection = engine.raw_connection() cursor = connection.cursor() cursor.execute("SELECT * from User where id=0") results = cursor.fetchall()
results
La variable est un tuple et je veux qu'elle soit de type dict(). Y'a-t-il une quelconque façon de réussir cela?
Lorsque j'utilise pymysql pour établir la connexion à la base de données, je suis capable de le faire
cursor = connection.cursor(pymysql.cursors.DictCursor)
Y a-t-il quelque chose de similaire dans SQLAlchemy ?
Remarque : La raison pour laquelle je souhaite apporter cette modification est de me débarrasser de l'utilisation de pymysql dans mon code et d'utiliser simplement la fonctionnalité SQLAlcehmy, c'est-à-dire que je ne veux pas avoir "importer pymysql" n'importe où dans mon code.
Vous pouvez utiliser des curseurs sqlalchemy et des descriptions de curseur.
Réponse mise à jour pour SQLAlchemy 1.4 :
La version 1.4 est obsolète, l'ancien
engine.execute()
模式,并更改了.execute()
内部运行的方式。.execute()
renvoie désormais un objet CursorResult avec la méthode .mappings () :(réponse précédente pour SQLAlchemy 1.3)
Si vous utilisez
engine.execute
而不是raw_connection()
,SQLAlchemy 已经为您完成了此操作。使用engine.execute
,fetchone
将返回一个SQLAlchemyRow
对象,fetchall
将返回一个list
Row
对象。Row
对象可以通过键访问,就像dict
idem :Si vous avez besoin d'un
dict
objet réel, vous pouvez simplement le convertir :