我绝对不熟悉SQL,但我觉得插入非常简单。我无法弄清楚问题
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()
当我通过以下内容时:
insert(1, 2)
我收到错误:
OperationalError: near "'1'": syntax error
如果有帮助,所有字段都是文本。
提前致谢
答案 0 :(得分:4)
您尚未正确格式化插入语句。
现在你要在parens中指定列名。要指定值,您需要使用VALUES
关键字。如果您为所有列提供值,则不必指定列名,但是您需要包含VALUES
。
不要使用字符串连接来构建查询。相反,使用参数化查询,它允许数据库驱动程序转义任何可能导致注入攻击的用户输入。
query = 'INSERT INTO test (title, name, time) VALUES (?, ?, ?)'
c.execute(query, (title, name, time))