Python, MySQL _mysql_exceptions.ProgrammingError: (1064, 'You have an error in your SQL syntax

Python, MySQL _mysql_exceptions.ProgrammingError: (1064, 'You have an error in your SQL syntax

我目前正在向本地 MySQL 数据库发送 Twitter 流,我 运行 遇到了问题。每当用户创建其中包含 " 的推文时,我都会收到语法错误,因为它与 Insert 语句混淆。

我很好奇解决这个问题的最佳方法,这样一个人的推文就不会影响插入语句。

示例变量:

tweetId = 98757629
userId = 07gos870sg
text = "this is "what " is messing up my sql"
day = 04
month = 'dec'
year = 2016
hour = 23
minute = 45
placeId = 'kj4h5b899'


c.execute('INSERT INTO tweet VALUES("%s", "%s", "%s", "%s", "%s", 
           "%s", "%s", "%s", "%s")' % \
           (tweetId, userId, text, day, month, year, hour, minute, placeId))

我想过在将插入语句发送到代码之前,只取出任何会弄乱插入语句的字符(“`”);但是,我不想编辑任何用户提交的数据。

您应该绑定变量而不是格式化 sql 字符串。

sql = "INSERT INTO tweet VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)"
values = (tweetId, userId, text, day, month, year, hour, minute, placeId)
cursor.execute(sql, values)