Список привязок как параметр в Python ibm_db WHERE IN условие - PullRequest
0 голосов
/ 14 декабря 2018

любым способом я могу использовать список Python для привязки к параметру WHERE IN в ibm_db?

По сути, что-то вроде этого:

sql = "SELECT * FROM TABLE WHERE FILE_NAME IN (?)"
stmt = ibm_db.prepare(conn, sql)
imb_db.bind_param(stmt, 1, ['first.txt', 'second.txt'])

, но это не работает .. Спасибо за любыепомощь.

1 Ответ

0 голосов
/ 14 декабря 2018

Параметризация in значений является распространенной проблемой для разных драйверов, и python-ibmdb не является исключением.Вы не можете напрямую параметризовать список значений для каждого заполнителя.

Вы должны будете динамически определить желаемое количество заполнителей и затем связать их.Что-то вроде этого:

values = ['first.txt', 'second.txt']

placeholders = ",".join("?" for _ in values)
sql = """
SELECT * 
FROM TABLE 
WHERE FILE_NAME IN ({placeholders)""".format(placeholders=placeholders)

stmt = ibm_db.prepare(conn, sql)

for index, value in enumerate(values):
    imb_db.bind_param(stmt, index, value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...