Python 3.65插入查询引发操作错误

时间:2018-06-26 14:20:31

标签: python-3.x sqlite

我的插入查询遇到问题。我不断收到错误

尝试了谷歌建议的几种方法,但无济于事。

我的数据值填充在整个脚本的列表中,这是将值插入查询的唯一方法。

字段数字和值对齐;我已经尝试了所有琴弦;我试过使用(sql_formatted,);最后是[sql_formatted]

如果我在sqlite浏览器中将查询作为一个大的长字符串手动提交,它将起作用。正是这个有力的sqlite3库迫使我使用(?,?,?....)格式,这使我感到悲伤。

为简单起见,我将其完全分解:

sql_formatted = []
sql_formatted.append("2018-06-26")
sql_formatted.append("my test")
sql_formatted.append("1.0")
sql_formatted.append("runperiod")
sql_formatted.append("Transaction 1")
sql_formatted.append(1.776)
sql_formatted.append(8.803)
sql_formatted.append(15.161)
sql_formatted.append(4.138)
sql_formatted.append(13.999)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append(15.161)
sql_formatted.append(23)
sql_formatted.append(0)
sql_formatted.append(0)
sql_formatted.append('N')

try:

cur.execute("insert into lr_rundata (current_date, test_name, app_version, test_run_period, transaction_name, '\
'sla_status, minimum, average, maximum, std_deviation, percentile80, percentile81, percentile82, percentile83, percentile84, '\
'percentile85, percentile86, percentile87, percentile88, percentile89, percentile90, percentile91, percentile92, percentile93,'\
'percentile94, percentile95, percentile96, percentile97, percentile98, percentile99, pass, fail, stop, deleted) values '\
'(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (sql_formatted,))

任何建议都将受到欢迎!

亲切的问候

表脚本:

cur.executescript('''CREATE TABLE lr_rundata (
id      integer primary key AUTOINCREMENT,
current_date   DATETIME NOT NULL,
test_name   TEXT NOT NULL,
app_version   TEXT NOT NULL,
test_run_period   TEXT NOT NULL,
transaction_name   TEXT NOT NULL,
sla_status   INTEGER NOT NULL,
minimum   REAL NOT NULL,
average   REAL NOT NULL,
maximum   REAL NOT NULL,
std_deviation   REAL NOT NULL,
percentile80   REAL NOT NULL,
percentile81   REAL NOT NULL,
percentile82   REAL NOT NULL,
percentile83   REAL NOT NULL,
percentile84   REAL NOT NULL,
percentile85   REAL NOT NULL,
percentile86   REAL NOT NULL,
percentile87   REAL NOT NULL,
percentile88   REAL NOT NULL,
percentile89   REAL NOT NULL,
percentile90   REAL NOT NULL,
percentile91   REAL NOT NULL,
percentile92   REAL NOT NULL,
percentile93   REAL NOT NULL,
percentile94   REAL NOT NULL,
percentile95   REAL NOT NULL,
percentile96   REAL NOT NULL,
percentile97   REAL NOT NULL,
percentile98   REAL NOT NULL,
percentile99   REAL NOT NULL,
pass   INTEGER NOT NULL,
fail   INTEGER NOT NULL,
stop   INTEGER NOT NULL,
deleted        TEXT NOT NULL)''')

1 个答案:

答案 0 :(得分:1)

您已将值附加到sql_formatted 33次,但您要插入34列。另一个问题是引号。它们不一致。您可以交替使用双引号和单引号。另外,由于使用的是数组,因此不需要元组语法。请参阅下面的代码...

我无法测试。让我知道结果:

cur.execute('insert into lr_rundata (current_date, test_name, app_version, test_run_period, transaction_name, '\
'sla_status, minimum, average, maximum, std_deviation, percentile80, percentile81, percentile82, percentile83, percentile84, '\
'percentile85, percentile86, percentile87, percentile88, percentile89, percentile90, percentile91, percentile92, percentile93,'\
'percentile94, percentile95, percentile96, percentile97, percentile98, percentile99, pass, fail, stop, deleted) values '\
'(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', sql_formatted)