Python выполняет SQL-запрос с WHERE IN {list} и список слишком длинный - PullRequest
0 голосов
/ 02 июня 2018

Вот часть моего скрипта:

sql1 = """
                    SELECT distinct th.name, 'MMS' as Status
                    FROM t1 
                    JOIN t2 on t1.id = t2.tid
                    WHERE t2.station= 'MatS'
                    AND t1.name IN ({listthinglist})
        """.format(listthinglist=', '.join("'" + item + "'" for item in list_of_things))
    cur.execute(sql1)

list_of_things содержит 22016 элементов, и я не могу выполнить этот запрос в Python.Есть ли альтернатива для запуска подобных запросов в python.

1 Ответ

0 голосов
/ 02 июня 2018

Пожалуйста, не используйте format для этого.Функция execute принимает аргумент «параметры», которому вы передадите свой список.Вы можете изменить его так:

sql1 = """
  SELECT distinct th.name, 'MMS' as Status
  FROM t1 
  JOIN t2 on t1.id = t2.tid
  WHERE t2.station= 'MatS'
  AND t1.name IN (%s)
"""
cur.execute(sql1, (list_of_things,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...