Ich verwende Flask SQLAlchemy und habe den folgenden Code, um Benutzer aus einer Datenbank über eine unformatierte SQL-Abfrage aus einer MySQL-Datenbank abzurufen:
connection = engine.raw_connection() cursor = connection.cursor() cursor.execute("SELECT * from User where id=0") results = cursor.fetchall()
results
Die Variable ist ein Tupel und ich möchte, dass sie vom Typ dict() ist. Gibt es eine Möglichkeit, dies zu erreichen?
Wenn ich pymysql verwende, um die Datenbankverbindung aufzubauen, kann ich das tun
cursor = connection.cursor(pymysql.cursors.DictCursor)
Gibt es etwas Ähnliches in SQLAlchemy?
Hinweis: Der Grund, warum ich diese Änderung vornehmen möchte, besteht darin, die Verwendung von pymysql in meinem Code loszuwerden und nur die SQLAlcehmy-Funktionalität zu verwenden, d. h. ich möchte nirgendwo in meinem Code „pymysql importieren“ haben.
您可以使用sqlalchemy游标和游标的描述。
更新了 SQLAlchemy 1.4 的答案:
版本 1.4 已弃用旧的
engine.execute()
模式,并更改了.execute()
内部运行的方式。.execute()
现在返回 CursorResult 对象,带有 .mappings ()方法:(之前针对 SQLAlchemy 1.3 的回答)
如果您使用
engine.execute
而不是raw_connection()
,SQLAlchemy 已经为您完成了此操作。使用engine.execute
,fetchone
将返回一个SQLAlchemyRow
对象,fetchall
将返回一个list
Row
对象。Row
对象可以通过键访问,就像dict
一样:如果您需要一个真正的
dict
对象,那么您只需转换它即可: