SQLAlchemy: ObjectNotExecuteableError при объединениях - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время я борюсь с утверждением в SQLAlchemy. По сути, сам скрипт SQL работает и выглядит как '

SELECT DISTINCT t1.col1, t1.col2, t2.col1, t2.col2, t2.col3, t3.col1
FROM t1
JOIN t2 ON t1.id = t2.id
LEFT JOIN t3 on t1.id = t3.id and t3.col2 = 12345

Теперь, разделив этот оператор на SQLAlchemy, я получил что-то вроде этого:

stmt = select([t1.c.col1, t1.c.col2, t2.c.col1, t2.c.col2, t2.c.col3, t3.c.col1]).distinct().\
     select_from(table(t1)).\
     join(table(t2), t1.c.id == t2.c.id).\
     outerjoin(table(t3), and_((t1.c.id == t3.c.id), (t3.c.col2 == 12345))

Я думаю, это из-за отличного. Я также поместил его в конец полной строки после externaljoin, но там я получаю ошибку атрибута, говоря, что у join нет никакого отличительного атрибута.

Есть какие-нибудь намеки на это для моего?

Большое спасибо заранее, С уважением, Томас

1 Ответ

0 голосов
/ 01 мая 2018

Я сам не могу в это поверить, но я нашел ответ на мою проблему. Это более или менее то, как соединения должны объединяться вместе.

Решение для моего запроса выше:

stmt = select([t1.c.col1, t1.c.col2, t2.c.col1, t2.c.col2, t2.c.col3, t3.c.col1]).\
     select_from(
         table(t1).\
         join(table(t2), t1.c.id == t2.c.id).\
         outerjoin(table(t3), and_((t1.c.id == t3.c.id), (t3.c.col2 == 12345)))
     ).distinct()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...