Я пытаюсь передать неизвестное количество параметров SQL Server в python 3.6. Вот мой код с использованием pypyodbc:Python - передать список как params в SQL, плюс больше переменных
cursor = cnxn.cursor()
theargs= ['1033286869','1053474957','1063654630','1104116235','1104910306','JASON']
thesql = """SELECT *
FROM BI_DUPLICATES_STAGE_0
WHERE DUP_ID IN (?, ?, ?, ?, ?)
AND FRST_NM = ?
"""
cursor.execute(thesql, theargs)
resultset = cursor.fetchall()
Это работает. Тем не менее, я никогда не знаю, сколько DUP_ID у меня будет. Я видел несколько примеров использования списка, но если у меня есть другая переменная, такая как этот случай, FRST_NM
, то я не могу просто использовать список.
Итак, если кто-то может предоставить простой пример наличия списка (переменной длины) и другой переменной и как заставить SQL работать, я бы очень признателен! Я не обязан использовать pypyodbc, если это проблема, и есть другой способ сделать это.
ОБНОВЛЕНИЕ: Благодарим за красиво отформатированный ответ. Только один быстрый вопрос. Я все еще немного неясно, как я форматировать 2 списка, если я должен был производить что-то вроде: SELECT * FROM BI_DUPLICATES_STAGE_0 WHERE DUP_ID IN (1033286869, 1053474957, 1063654630, 1104116235, 1104910306) AND MID_NM IN ('SMITH','JON') AND FRST_NM = 'JASON'
Без хорошей форме присоединиться, у меня есть некоторый беспорядок, как это: SELECT * FROM BI_DUPLICATES_STAGE_0 WHERE DUP_ID IN (?,?,?,?,?) AND MID_NM IN (?,?) AND FRST_NM = ?
Как бы я формат список в два раза рекомендуется? Имея в виду, я не буду знать, как долго каждый список (ID и MID_NM) на самом деле будет.
* У меня есть некоторый беспорядок, как это * ... почему этот запрос беспорядок? Это подготовленный оператор для параметризованного запроса. – Parfait