簡體   English   中英

python中sql腳本中未指定數量的變量

[英]Unspecified number of variables in an sql script in python

我想通過類似於這樣的python運行對sql數據庫的查詢:

cursor.execute('SELECT * FROM mf WHERE col2 = ? or ?', (country))

但是,我想在代碼的這一部分中包含未指定數量的 或 選項,並且用戶在單獨的參數文件中指定國家/地區,即我不知道有多少? 放入代碼,因為它是可變的。 是否可以在 SQL 代碼中執行此操作?

首先,您的 SQL 代碼無效。 你想要col2 = ? or col2 = ? col2 = ? or col2 = ? 或(更好) col2 IN (?, ?, ?)

像這樣使用參數數量未知的參數化查詢是不可能的。 另一方面,為了安全起見,您必須使用參數化查詢。 解決方法是在知道參數列表中的參數個數的基礎上,使用IN形式構造一個參數化查詢:

params = get_params_from_file_or_somewhere_else() # wherever you have the params.

qmarks = ', '.join('?' for param in params) # string with the "right" number of "?"

sql = 'SELECT * FROM mf WHERE col2 IN ({});'.format(qmarks)

cursor.execute(sql, params)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM