Python/Sqlite3:发生异常:Sqlite3.ERROR

Python/Sqlite3:发生异常:Sqlite3.ERROR,python,sqlite,Python,Sqlite,我试图创建一个函数来处理API错误消息,但我在Python中得到了以下错误消息: 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 - X45

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

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"]}
我的代码是:

def error():
    if "message" in r.json():
        logText = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + " : " + r.json()['message']
        c.execute("INSERT INTO log VALUES ('"+ logText +"')")
        conn.commit()
        if "validationErrors" in r.json():
            logText = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + " : " + r.json()['validationErrors'][0]
            c.execute("INSERT INTO log VALUES ('"+ logText +"')")
            conn.commit()
        os._exit(1)
我不知道是什么原因导致了这个错误。任何帮助都将不胜感激。多谢各位

logText = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + " : " + r.json()['validationErrors'][0]
c.execute("INSERT INTO log VALUES ('"+ logText +"')")
您正在向日志值发送此SQL
插入('2018-12-10 23:31:26:预算名称必须唯一。'Test4-X4574747-PHONE'已存在')
,正如您看到的那样,在
Test4
之前关闭
引用,这就是为什么SQL不理解关闭引用后发生了什么

使用
c.execute(“插入日志值(?),[logText])

丹的代码行得通,但我不懂

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


请参见

如果出现
验证错误
,是否可以显示您的
日志文本
值。我想引号有问题。顺便说一句,将str插入带引号的str的最佳方法是使用
%r
。像
sql=“insert-into-log-values(%r)”%logText
@sashaaero-No一样,最好的方法是使用参数化查询:
c.execute(“insert-into-log-values(?),[logText])
在sql中是的,但我通常谈论的是字符串。但是我们在这里使用sql,所以你是对的。logText值是:2018-12-10 23:31:26:预算名称必须是唯一的。”Test4-X4574747-PHONE“已经存在是的,您正在关闭
Test4
之前引用。使用Dan D.展示的方式。感谢您的解释和链接。也感谢丹的投入