使用Python中的sqlite将变量插入数据库

时间:2012-07-29 19:39:17

标签: python sqlite

我想在python中使用sqlite库将一些数据从变量添加到我的数据库中。我创建一个表,然后运行sql语句。这是我的简单代码:

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。 你有想法解决它吗?

2 个答案:

答案 0 :(得分:3)

您的variable应该是一个元组:

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

创建单元素元组时,最后需要使用逗号。请注意,使用tuple()方法无法提供您想要的内容:

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

答案 1 :(得分:1)

cursor.execute()期望第二个参数是一个序列。你的variable是一个字符串,恰好是一个长度为3的序列:

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

这是导致您混淆错误消息的原因; .execute看到一个3元素的序列,只能预期1.将它传递给单元组元组中的.execute

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

请注意那里的逗号。