python sqlite字符串插入

时间:2011-08-05 15:32:40

标签: python sqlite

我正在尝试使用python将作为参数接收的字符串插入到sqlite数据库中:

    def addUser(self, name):

            cursor=self.conn.cursor()
            t = (name)
            cursor.execute("INSERT INTO users ( unique_key, name, is_online, translate) VALUES (NULL, ?, 1, 0);", t)
            self.conn.commit()

我不想使用字符串连接,因为http://docs.python.org/library/sqlite3.html建议反对它。

但是,当我运行代码时,我得到了异常

cursor.execute("INSERT INTO users ( unique_key, name, is_online, translate) VALUES (NULL, ?, 1, 0);", t)
pysqlite2.dbapi2.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 7 supplied

为什么Python会按字符拆分字符串,有没有办法阻止它这样做?

编辑:

更改为t = (name,) 给出以下异常

print "INSERT INTO users ( unique_key, name, is_online, translate) VALUES (NULL, ?, 1, 0)" + t
exceptions.TypeError: cannot concatenate 'str' and 'tuple' objects

2 个答案:

答案 0 :(得分:8)

你需要这个:

t = (name,)

制作单元素元组。

请记住,它是逗号,它构成一个元组,而不是括号!

答案 1 :(得分:1)

你的t变量不是元组,我认为它是一个长度为7的字符串。要做一个元组,不要忘记使用尾随昏迷:

t = (name,)