Синтаксис объединения SQLAlchemy с использованием нескольких имен столбцов - PullRequest
0 голосов
/ 04 июля 2018

Это следующий SQL-запрос, который я хочу выполнить и отлично работает в командной строке:

select * from table1 join table2 using (col1, col2)

Я не могу понять, как заставить это выполнить, используя SQLAlchemy, и любая помощь будет оценена.

Между таблицами нет внешних ключей. Строки таблицы могут быть спарены только по значениям, совпадающим в нескольких столбцах.

Спасибо!

1 Ответ

0 голосов
/ 04 июля 2018

Учитывая, что Entity1 отображается на table1, а Entity2 отображается на table2:

rows = session
    .query(Entity1, Entity2)
    .join(Entity2, (Entity1.col1==Entity2.col1) & (Entity1.col2==Entity2.col2))
    .all()

rows будет списком кортежей, где rows[][0] равно Entity1, а rows[][1] равно Entity2. Вы можете использовать .join() и затем указать условие соединения со вторым параметром. Если вы пропустите условие соединения, то только метод .query() создаст перекрестное соединение между table1 и table2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...