results 是一个元组,我希望它的类型为 dict()
SQLAlchemy 1.4 的更新答案:
1.4 版本已弃用旧版本engine.execute()
模式并改变了方式.execute()
内部运作。.execute()
现在返回一个游标结果 https://docs.sqlalchemy.org/en/14/core/connections.html#sqlalchemy.engine.CursorResult对象具有.mappings() https://docs.sqlalchemy.org/en/14/core/connections.html#sqlalchemy.engine.CursorResult.mappings method:
import sqlalchemy as sa
# …
with engine.begin() as conn:
qry = sa.text("SELECT FirstName, LastName FROM clients WHERE ID < 3")
resultset = conn.execute(qry)
results_as_dict = resultset.mappings().all()
pprint(results_as_dict)
"""
[{'FirstName': 'Gord', 'LastName': 'Thompson'},
{'FirstName': 'Bob', 'LastName': 'Loblaw'}]
"""
(之前对 SQLAlchemy 1.3 的回答)
如果您使用 SQLAlchemy 已经为您完成此操作engine.execute
代替raw_connection()
. With engine.execute
, fetchone
将返回一个 SQLAlchemyRow
对象和fetchall
将返回一个list
of Row
对象。Row
对象可以通过键来访问,就像dict
:
sql = "SELECT FirstName, LastName FROM clients WHERE ID = 1"
result = engine.execute(sql).fetchone()
print(type(result)) # <class 'sqlalchemy.engine.result.Row'>
print(result['FirstName']) # Gord
如果你需要一个真实的dict
对象然后你可以转换它:
my_dict = dict(result)
print(my_dict) # {'FirstName': 'Gord', 'LastName': 'Thompson'}