2012-07-29 123 views
0

我想在python中使用sqlite庫將變量中的一些數據添加到我的數據庫中。我創建一個表,然後運行sql語句。這是我簡單的代碼:在Python中使用sqlite插入變量到數據庫中

import sqlite3 
db = sqlite3.connect("dbse.sqlite") 
cursor= db.cursor() 
cursor.execute("CREATE TABLE Myt (Test TEXT)") 
variable = ('aaa') 
cursor.execute('INSERT INTO Myt VALUES (?)' , variable) 
db.commit() 

但在運行代碼之後,這個錯誤出現:

cursor.execute('INSERT INTO Myt VALUES (?)' , variable) 
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 3 supplied. 

當我插入包含一個字符值的變量,它工作得很好,但是當我使用具有多個字符的變量,它不起作用。 我使用python 3.2.3。 你有解決它的想法嗎?

回答

3

variable應該是一個元組:

variable = ('aaa',) # Notice the comma 

當創建一個元素的元組,則需要在最後用逗號。作爲一個方面說明,記住,使用tuple()方法不會給你想要的東西:

>>> tuple('aaa') 
('a', 'a', 'a') 
>>> ('aaa',) 
('aaa',) 
+2

謝謝,它運作良好! – Amir 2012-07-29 19:53:00

1

cursor.execute()預計,第二個參數是一個序列。你variable是一個字符串,而這恰好是長度爲3的序列:

>>> len(variable) 
3 
>>> list(variable) 
['a', 'a', 'a'] 

這是什麼原因造成的混亂的錯誤信息; .execute看到一個3元列率和預期只有1把它傳遞給.execute在一個元素的元組:

cursor.execute('INSERT INTO Myt VALUES (?)', (variable,)) 

注意逗號那裏。

相關問題