SQLAlchemy 1.4の回答を更新:
バージョン1.4では、古いengine.execute()
が廃止されました。 パターンを作成し、.execute()
の方法を変更しました 内部で動作します。 .execute()
CursorResult
を返すようになりました .mappings()を含むオブジェクトa> 方法:
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の以前の回答)
engine.execute
を使用する場合、SQLAlchemyはすでにこれを行っています。 raw_connection()
の代わりに 。 engine.execute
を使用 、fetchone
SQLAlchemyのRow
を返します オブジェクトとfetchall
list
を返します 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'}