SQLite的INSERT查询显示0值

时间:2013-06-18 20:35:13

标签: sqlite system.data.sqlite sqliteopenhelper

我在flask / python中创建了一个小项目,其中我只有一个DATABASE,它有一个表和一列init。 但我的DATABASE给出了错误 每当我通过在cmd中触发'''python dbase.py'''来检查我的数据库时。 它给出了一个ERROR,表示......

“”文件“dbase.py”,第19行,in   cur.execute(“INSERT INTO tdaba(输入)VALUES(?)”,daba)   sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用1,并且提供了3个。“”“

我将使用此数据库将TEXT在线输入到“输入”列中,为此我需要INSERT查询。

我的DATABASE名称是“daba”,它存储在名为“dbase.py”的文件中 它的代码是::

import sqlite3 as lite
import sys

daba = (
    ('1st mssg'),
    ('my 2nd mssg'),
    ('3rd msg, How r U ?')
)


con = lite.connect('daba.db')

with con:

    cur = con.cursor()

    cur.execute("DROP TABLE IF EXISTS tdaba")
    cur.execute("CREATE TABLE tdaba(input TEXT)")
    cur.execute("INSERT INTO tdaba (input) VALUES (?)", daba)

1 个答案:

答案 0 :(得分:0)

第一个问题是“daba”。它是字符串的元组而不是元组的元组

In [1]: daba = (
....:     ('1st mssg'),
....:     ('my 2nd mssg'),
....:     ('3rd msg, How r U ?')
....: )
In [2]: daba
Out[2]: ('1st mssg', 'my 2nd mssg', '3rd msg, How r U ?')

修复 - 在每个字符串后添加逗号(元组需要一个元素)。

daba = (
   ('1st mssg',),
   ('my 2nd mssg',),
   ('3rd msg, How r U ?',)
)

第二个问题 - 执行方法。你应该使用executemany。查看samples

cur.executemany("INSERT INTO tdaba (input) VALUES (?)", daba)