寫一個變量的名稱爲一個字符串不會奇蹟般地使內容出現在字符串中。
>>> p = 'some part'
>>> s = 'replace p of a string'
>>> s
'replace p of a string'
>>> s = 'replace %s of a string' % p
>>> s
'replace some part of a string'
>>> s = 'replace {} of a string'.format(p)
>>> s
'replace some part of a string'
你的情況,這將意味着:
>>> sql = "insert into cust_table (name) values (names) where cust_id IN ('%s')"
>>> ids = ", ".join(id)
>>> cursor.execute(sql % ids)
雖然我強烈懷疑您與names
有類似的問題。
爲了避免可能的sql注入問題,最好使用「參數化語句」。這看起來像這樣:
>>> sql = 'insert into ... where cust_id IN %s'
>>> cursor.execute(sql, (id,))
python的一些數據庫連接器能夠這樣做,但你可能不是。
一種解決方法可能是這樣的
>>> params = ', '.join(['%s']*len(id))
>>> sql = 'insert into ... where cust_id IN (%s)' % params
>>> cursor.execute(sql, id)
來源
2016-10-04 14:32:59
hop
謹防[鮑比表(https://xkcd.com/327/)。 –
編程不是/完全/神奇;) – hop