我試圖在python 3.6中將未知數量的參數傳遞給SQL Server。這裏是我使用pypyodbc的代碼:Python - 將參數列表傳遞給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()
This works。但是,我不知道我會有多少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