SQLAlchemy 和模糊列名
我在谷歌上搜索了很久,但似乎找不到解决我这个错误的方法。
我没有做任何连接操作,我只是想从这个表里获取所有数据。
其他的查询都运行得很好,但这个查询却出现了错误:
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 个回答
4
我猜测可能是列名的大小写敏感问题,这在使用 autoload=True
时覆盖列的时候会出现。为了验证这一点,可以把所有的列定义注释掉,只保留 autoload=True
。然后再反过来做一次。
想了解更多信息,可以查看SA文档中的 反射数据库对象 - 覆盖反射列。