在某些情况下,我发现ResultProxy
比ORM结果更方便(通过我理解的文档,我可以在完整的表中迭代列)。我试过这个:
query = session.query(Table1)
results = [ResultProxy(a) for a in query]
...但失败了:
AttributeError: 'Table1' object has no attribute 'dialect'
答案 0 :(得分:1)
您不能像这样实例化ResultProxy,它特定于DBAPI游标以及有关如何构造语句的上下文信息。使用Session.execute()从query.statement中获取一个。但是,为Query提供一个直接提供ResultProxy的方法并不难。
答案 1 :(得分:0)
快速回答:
conn = engine.connect()
result_proxy = conn.execute(query.selectable)
您还可以按名称获取列索引...
col_index = query.selectable.columns.keys().index(id_column_name)
...然后通过索引得到结果:
first_row_col_content = query.all()[0][col_index]