我這行,工程確定:SQLite的參數替換和引用
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
但我想使用SQLite參數替代,而不是替代的字符串替換(因爲我看到here這是安全的)。
這是我的(失敗)的嘗試:
t = (name,)
c.execute('select cleanseq from cleanseqs WHERE newID="?"',t)
但這行返回:
「提供的綁定 數有誤。目前的聲明使用 0,並提供了1個。'
因此,我的聲明的左側部分不起作用。我提供了一個綁定(名稱,在t中),但似乎沒有解析問號(?)。如果我刪除了「?」的引號,它就會起作用。但我想要引用留在那裏,因爲我記得有些情況下我需要它們。
所以現在的問題是:如何轉換這一行:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
這是很好的使用參數,它不是隻有更安全,但也更快。閱讀這裏:http://stackoverflow.com/questions/904796/how-do-i-get-around-the-problem-in-sqlite-and-c/926251#926251 – tuinstoel 2009-06-17 08:13:34