我有一些python代码连接我所有的sqlite列并生成一个INSERT命令。当我执行insert语句时,我得到了这个:
(<class 'sqlite3.OperationalError'>, OperationalError('near "[\'sdf\',
\'sdf\', \'435\', \'fdsg\', \'434\', \'44\', \'dsf\', \'dfg\', \'0\', \'0\']":
syntax error',), <traceback object at 0x02CDF210>)
*错误不包含新行,它只是一个长字符串。
为了排除故障,我在命令执行之前输出INSERT字符串。当我在sqlite浏览器中运行时,它可以完美运行:
INSERT INTO clients (client_id, firstname, lastname, age, gender,
phone_number1, phone_number2, email_address, contact_address, total_time,
total_amt) values ('4','sdf','sdf','435','fdsg','434','44','dsf','dfg','0','0')
我认为这个错误与&#39; \&#39;有关。 ,&#39; [&#39;和&#39;]&#39;所以我通过&#34;擦洗&#34;:
return str(element).translate({ord(i):None for i in "\{}[]!@;:?!.#$"})
但没有任何改变。我该如何解决这个错误?为什么python会添加这些额外的字符?
这是我的python db执行代码和生成值&#39; list&#39;的代码。 执行代码:
formatted_values = admin.format_cols_for_db(cols,'values',client_id,values)
print("INSERT INTO clients {q} values {v}".format(q=query,v=formatted_values))
admin.db.execute("INSERT INTO clients {q} values {v}".format(q=query,v=values))
字符串代码:
values = "('" + client_id + "',"
while i < len(value_li): #puts into this format: ('4','first','last','33')
if i < len(value_li)-1:
values = values + "'" + scrub(value_li[i]) + "',"
else:
values = values + "'" + scrub(value_li[i]) + "')"
i = i + 1
return values
答案 0 :(得分:0)
我解决了。我应该插入新的格式化字符串(formatted_values)时插入一个列表(值)。花了几个小时才意识到我的打印输出与我的执行块有不同的变量。
应该是:
admin.db.execute("INSERT INTO clients {q} values {v}".format(q=query,v=formatted_values))
新秀错误......