Python / Sqlite3:发生异常:sqlite3.OperationalError

时间:2018-12-11 04:17:28

标签: python sqlite

我正在尝试创建一个处理API错误消息的函数,但我在Python中得到了以下错误消息:

$JBOSS_HOME/bin/jboss-cli.sh -c --controller=http-remoting://localhost:9999

服务器响应为:

Exception has occurred: sqlite3.OperationalError
near "Test4": syntax error

我的代码是:

{"message":"Failed to validate one or more request parameters","validationErrors":["Budget name must be unique. 'Test4 - X4574747-PHONE' already exits"]}

我无法确定导致此错误的原因。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

logText = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + " : " + r.json()['validationErrors'][0]
c.execute("INSERT INTO log VALUES ('"+ logText +"')")

您正在发送此SQL INSERT INTO log VALUES ('2018-12-10 23:31:26 : Budget name must be unique. 'Test4 - X4574747-PHONE' already exits'),并且您看到在'之前关闭了Test4引号,这就是为什么SQL无法理解在关闭引号之后发生了什么。

使用c.execute("INSERT INTO log VALUES (?)", [logText])

  

Dan的代码有效,但我不理解。

?表示从给定参数列表传递参数。就是[logText]。最好使用这种方式来避免SQL注入。

请参见here