我目前正在向本地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))
我认为只要把任何一个字符("`')弄得乱七八糟,然后在将它们发送到代码之前插入语句;我不想编辑任何用户提交的数据。
答案 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)