2016-11-22 78 views
0

我想如下插入在sqlite3的DB的 表值列:Python的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] 

如果是整数,则没有错误。 如果输入是一个字符串(例如joseph),它会给出以下错误。任何想法为什么?

OperationalError: no such column: joseph 
+1

您是否尝试过使用其他SQL插入语法,在哪里指定列名称? (INSERT INTO TABLE_NAME)(column1,column2,column3,... columnN) VALUES(value1,value2,value3,... valueN);' – danidee

+0

是我试过了, c.execute('INSERT INTO keys(CustomerName,PurshaceOrder ,'GeneratedKey','CurrentTime')VALUES('+ Customer_Name +','+ Purchase_Order +','+ Generated_Key +','+ currtime +')') 仍然给出错误 –

回答

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() 

使用这种类型的结构,涉及'?'性格,也被认为是对他人更为安全的注射攻击。

+0

谢谢!有效。但我很想知道为什么我的方法不知道 –

+0

我希望我能告诉你。 (但我不能)。无论如何,不​​客气。 –

相关问题