4

我在谷歌上进行了很好的搜索,但在我的情况下,我似乎无法找到这个错误的答案。

我没有进行任何连接,我实际上只是想从这张表中获取所有内容。

所有其他查询都可以正常工作,但这似乎与此错误有关:

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 设置为主键,也会发生同样的错误。

其他人遇到过这个问题吗?

4

1 回答 1

4

我的猜想是在覆盖使用反映的列时列名的大小写敏感autoload=True。要验证,请注释掉所有列定义并离开autoload=True。然后做相反的事情。

有关详细信息,请参阅反映数据库对象 - 覆盖SA 文档的反映的列。

于 2011-11-14T14:34:53.367 回答