Python,MySQL _mysql_exceptions.ProgrammingError:(1064,'你的SQL语法有错误

时间:2016-12-07 22:48:04

标签: python mysql python-2.7 twitter mysql-python

我目前正在向本地MySQL数据库发送推特流,但我遇到了一个问题。每当用户使用"创建推文时位于其中,我将得到语法错误,因为它与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))

我认为只要把任何一个字符("`')弄得乱七八糟,然后在将它们发送到代码之前插入语句;我不想编辑任何用户提交的数据。

1 个答案:

答案 0 :(得分:1)

您应该绑定变量而不是格式化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)