我的插入查询遇到问题。我不断收到错误
尝试了谷歌建议的几种方法,但无济于事。
我的数据值填充在整个脚本的列表中,这是将值插入查询的唯一方法。
字段数字和值对齐;我已经尝试了所有琴弦;我试过使用(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)''')
答案 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)