Соедините два столбца из таблицы A в таблицу B - PullRequest
0 голосов
/ 21 февраля 2012

Я нашел ответ на мой вопрос, но в неправильном формате.

Используя SQL Alchemy, я хочу объединить столбцы из таблицы A в один столбец в таблице B.

Таблица A содержит два столбца для кода местоположения. Я могу получить имя местоположения, присоединившись к таблице B, но как это сделать?

Пока у меня есть это:

locationreq = sa.Table("INMPTL_LOCATION_REQUEST", meta.metadata,
    sa.Column("request_id", sa.types.String(), primary_key=True),
    sa.Column("status", sa.types.String(100)),
    sa.Column("new_loc", sa.types.String(), sa.ForeignKey("INMPTL_LOCATIONS_TBL.inmptl_location_code")),
    sa.Column("previous_loc", sa.types.String(), sa.ForeignKey("INMPTL_LOCATIONS_TBL.inmptl_location_code")),
    autoload=True,
    autoload_with=engine)

locationtable = sa.Table("INMPTL_LOCATIONS_TBL", meta.metadata,
    sa.Column("INMPTL_LOCATION_CODE", sa.types.Integer(), primary_key=True),
    autoload=True,
    autoload_with=engine)

orm.mapper(Location, locationtable )
orm.mapper(LocationRequest, locationreq, extension= wf.WorkflowExtension(), properties = {'location':relation(Location)}

Если бы только один из этих столбцов был сопоставлен со второй таблицей, я мог бы назвать что-то вроде:

model.LocationRequest.location.location_name

Но из-за того, что я сопоставляю два столбца с одной и той же таблицей, она запутывается.

Кто-нибудь знает правильный способ достижения этого?

1 Ответ

1 голос
/ 21 февраля 2012

Я собирался удалить этот вопрос, но это не дубликат. Ответ здесь (настройка первичного и вторичного объединений)

orm.mapper(LocationRequest, locationreq, extension= wf.WorkflowExtension(),
    properties={
        "new_location":relation(Location,
        primaryjoin=locationtable.c.inmptl_location_code==locationreq.c.new_loc, lazy = False),
        "previous_location":relation(Location,
        primaryjoin=locationtable.c.inmptl_location_code==locationreq.c.previous_loc, lazy = False)
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...