SQLAlchemy и неоднозначное имя столбца - PullRequest
4 голосов
/ 14 ноября 2011

У меня был хороший поиск в 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 Ответ

4 голосов
/ 14 ноября 2011

Моя гипотеза будет чувствительностью к регистру имен столбцов при переопределении столбцов, которые отражаются с помощью autoload=True. Для проверки закомментируйте все определения столбцов и оставьте autoload=True. Затем сделайте обратное.

См. Отражение объектов базы данных - переопределение отраженных столбцов документации SA для получения дополнительной информации.

...