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)
我目前正在向本地 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)