SQLAlchemy和Ambiguous Column名称

时间:2011-11-14 11:24:04

标签: python sqlalchemy ambiguous

我在google上搜索得很好但我似乎无法在我的案例中找到这个错误的答案。

我没有加入任何联盟,我只是试图从这张表中获取所有内容。

所有其他查询都运行正常,但这似乎弄乱了这个错误:

InvalidRequestError: Ambiguous column name 'INMPTL_WIW_BATAM_STG.pers_no' in result set! try 'use_labels' option on select statement.

型号:

    batamStg = sa.Table("INMPTL_WIW_BATAM_STG", meta.metadata, 
    sa.Column("PERS_NO", sa.types.String(),primary_key=True),
    sa.Column("FIRST_NAME", sa.types.String()),
    sa.Column("LAST_NAME", sa.types.String()),
    sa.Column("KNOWN_AS", sa.types.String()),
    sa.Column("JOB_TITLE", sa.types.String()),
    sa.Column("MANAGER_NAME", sa.types.String()),
    sa.Column("MANAGER_ID", sa.types.String()),
    sa.Column("MANAGER_COST", sa.types.String()),
    autoload=True,
    autoload_with=engine)

查看:

btm = meta.Session.query(model.BatamStaging).all();

此处只有一列名为Pers_no,所有主键都是唯一的。

如果我尝试将LAST_NAME设置为主键,也会出现同样的错误。

还有其他人有这个问题吗?

1 个答案:

答案 0 :(得分:4)

我的猜想是,当覆盖使用autoload=True反映的列时,列名称的区分大小写。要进行验证,请注释掉所有列定义并退出autoload=True。然后做相反的事情。

有关详细信息,请参阅SA文档的Reflecting Database Objects - Overriding Reflected Columns