我正在尝试遍历查询中的(SQLAlchemy Core)结果行,该查询具有(多个)联接和结果集中具有相同名称的多个列。一个最小的例子:
query = select([Table_A, Table_B]).select_from(Table_A.outerjoin(Table_B))
query_result = conn.execute(query)
for row in query_result:
for column_name, column_value in row.items(): # this breaks due to overlapping column names in Table_A and Table_B
print(column_name, column_value)
由于我在查询结果中有多个具有相同列名的列,因此无法将列名用作迭代的键。取而代之的是,列对象将提供用作键的好方法:
for col, value in row.items(): # notice the col variable should hold a column object instead of only it's name
print(col.name, value)
我知道我可以使用列对象作为索引来访问结果行:value = row[Table_A.c.id]
,因此感觉也可以使用列对象作为键对其进行迭代是有意义的。有人知道此功能是否可用(或可以某种方式解决)吗?