2015-05-08 118 views
1

我绝对是SQL新手,但我觉得插入非常简单。SQLITE3插入错误

insert(1, 2) 

我得到的错误:

OperationalError: near "'1'": syntax error

所有字段是文本,是否可以帮助我通过下面我想不通的问题

def insert(title, name): 
    time = datetime.now() 
    conn = sqlite3.connect('test.db') 
    c = conn.cursor() 
    query = """INSERT INTO test ('{}', '{}', '{}')""".format(title, name, time) 
    c.execute(query) 
    conn.commit() 

在此先感谢

+2

不要将参数传递给使用字符串连接,'format',''''等的查询。您很容易受到SQL注入的影响。改用参数化查询。 'c.execute(“INSERT INTO test VALUES(?,?,?)”,(title,name,time))' –

+0

done!十分感谢您的建议 – kmomo

回答

4

您没有正确格式化您的INSERT语句。

现在你正在指定列表中的列名。要指定值,您需要使用VALUES关键字。如果您为所有列提供值,则不必指定列名称,但您确实需要包含VALUES

不要使用字符串连接来构建查询。相反,使用参数化查询可以让数据库驱动程序逃避任何可能导致注入攻击的用户输入。

query = 'INSERT INTO test (title, name, time) VALUES (?, ?, ?)' 
c.execute(query, (title, name, time))