Используйте `IN` с возможно пустой заданной пользователем последовательностью - PullRequest
0 голосов
/ 28 мая 2020

У меня есть запрос MySQL из Python, который выглядит следующим образом:

foos: Sequence[str] = get_user_specified_strs()

# Return all the rows where `foo` is in `foos`.
# If `foos` contains the string '*', return everything.
results = await conn.query_rows(
  '''
  SELECT ...
  WHERE
    '*' IN %(foos)s
    OR foo IN %(foos)s
  ...
  ''',
  {'foos': foos}
)

Проблема в том, что IN () недействителен в MySQL, поэтому пустой foos вызовет сбой запроса. Есть ли способ написать запрос , не требуя динамической сборки SQL строки , чтобы он мог обрабатывать этот случай? То есть, рассматривая IN () как FALSE.

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