SQLAlchemy:如何引用已过滤的字段

时间:2018-10-23 23:36:18

标签: python postgresql sqlalchemy

我正在使用SQLAlchemy做一个相对简单的ETL项目。

现有的PostgreSQL数据库很大,具有多个'schemas'(在PostgreSQL子数据库意义上),其中一个是新的,并且该项目是将数据从模式'旧'转换为模式'新'。 / p>

我有一组两个“旧”源表,我必须将它们连接在一起才能获得新表...我看不到如何引用两个表的联接/过滤超集中的字段。例如,如果我只循环一个表:

allp = session.query(Permit).all()
for p in allp:
    print p.permit_id

...按预期工作。

但是,如果我设置了一个过滤器以合并两个表:

prmp = session.query(Permit,Permit_master).filter(Permit_master.id == Permit.mast_id).all()
for p in prmp:
    print p.permit_id

给予

'result' object has no attribute 'permit_id'

这一定很简单,但是我尝试用dir()检查对象无济于事。

请帮助...

1 个答案:

答案 0 :(得分:1)

您的查询结果是PermitPermit_master中的keyed 2-tuples。您可以使用结果实体的位置或键来访问它们:

for p in prmp:
    print p.Permit.permit_id
    # or
    print p[0].permit_id