【问题标题】:SQLITE3 Insert ErrorSQLITE3 插入错误
【发布时间】:2015-07-18 19:25:16
【问题描述】:

我绝对是 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

如果有帮助,所有字段都是文本。

提前致谢

【问题讨论】:

  • 不要将参数传递给使用字符串连接、format% 等的查询;你很容易受到 SQL 注入的攻击。请改用参数化查询。 c.execute("INSERT INTO test VALUES (?,?,?)", (title, name, time))
  • 完成!非常感谢您的建议

标签: python sql sqlite flask


【解决方案1】:

您的插入语句格式不正确。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-17
    • 2013-07-17
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2017-08-03
    相关资源
    最近更新 更多