Python sqlite3没有这样的列非常奇怪的错误

时间:2016-11-22 21:31:15

标签: python sqlite

我正在尝试将值插入sqlite3数据库表中的列 如下:

c.execute("""CREATE TABLE IF NOT EXISTS keys(name TEXT, po TEXT, options TEXT, identifier TEXT, currtime TEXT)""")
c.execute('INSERT INTO keys VALUES ( ' + Customer_Name + ' , ' + Purchase_Order + ' , ' + options + ' , ' + UUID + ' , ' + currtime + ' )')

这些参数实际上是从HTML前端传递的。我将它们从unicode转换为字符串,如下所示:

options = str(request.form.get("Software_Options"))
UUID = str(request.form.get("UUID_Identifier"))
Customer_Name = str(request.form.get("Customer_Name"))
Purchase_Order = str(request.form.get("Purchase_Order"))
currtime= str(datetime.datetime.now())[:10]

如果是整数则没有错误。 如果输入是一个字符串(例如约瑟夫),则会出现以下错误。知道为什么吗?

OperationalError: no such column: joseph

1 个答案:

答案 0 :(得分:0)

您似乎从Web前端一次获取一个数据库记录的内容。在这种情况下,您可以将记录构建为列表,并按以下方式将其插入数据库中。

import sqlite3

conn = sqlite3 . connect ( 'db.sqlite' )
c = conn . cursor ( )

c.execute("""CREATE TABLE IF NOT EXISTS keys(name TEXT, po TEXT, options TEXT, identifier TEXT, currtime TEXT)""")

oneRecord = [ 'joe', 'DA123', 'nilbymouth', '0034', '1653', ]
c.execute('INSERT INTO keys VALUES (?,?,?,?,? )', oneRecord)

conn.close()

使用这种类型的建筑,涉及'?'其他人反对注射攻击也被认为更安全。