使用SQLAlchemy ORM时,如何以ResultProxy格式返回查询?

时间:2013-08-13 09:54:12

标签: python sqlalchemy

在某些情况下,我发现ResultProxy比ORM结果更方便(通过我理解的文档,我可以在完整的表中迭代列)。我试过这个:

query = session.query(Table1)
results = [ResultProxy(a) for a in query]

...但失败了:

AttributeError: 'Table1' object has no attribute 'dialect'

2 个答案:

答案 0 :(得分:1)

您不能像这样实例化ResultProxy,它特定于DBAPI游标以及有关如何构造语句的上下文信息。使用Session.execute()从query.statement中获取一个。但是,为Query提供一个直接提供ResultProxy的方法并不难。

答案 1 :(得分:0)

快速回答:

conn = engine.connect()
result_proxy = conn.execute(query.selectable)

Docs here

您还可以按名称获取列索引...

col_index = query.selectable.columns.keys().index(id_column_name)

...然后通过索引得到结果:

first_row_col_content = query.all()[0][col_index]