[英]Python sqlite: using executemany() with unspecified number of parameters
[英]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.