Печать скомпилированного оператора sqlalchemy выдает параметр NULL при использовании like и any_ - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь увидеть скомпилированную версию моего объекта выбора sqlalchemy. В какой-то момент мне нужно посмотреть, содержит ли столбец varchar[] какую-либо строку из списка подстрок. (Другие части моего запроса, где я использую in_ и список строк, работают.) Почему эта печать:
... <BEGINNING OF QUERY> ... LIKE ANY(NULL)
вместо
... <BEGINNING OF QUERY> ... LIKE ANY('list%', 'of%', 'substrings%')

Примечание (другие части моего запроса, где я использую in_ и список строк, работают.)


from custom_database_classes import MyTable
from sqlalchemy import create_engine, select, cast, func, or_, and_, any_,


def read_data():
  array_q = func.lower(func.array_to_string(MyTable.some_arr_col, ' ')).like(any_(['list%', 'of%', 'substrings%']))
  query = select(['*']).where(or_(array_q))
  print(query.compile(compile_kwargs={"literal_binds": True}))

Фактический результат

SELECT * FROM Schema.MyTable
WHERE lower(array_to_string(Schema.MyTable.some_arr_col, ' ')) LIKE ANY (NULL)

Ожидаемый результат

SELECT * FROM Schema.MyTable
WHERE lower(array_to_string(Schema.MyTable.some_arr_col, ' ')) LIKE ANY ('list%', 'of%', 'substrings%')

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