Python mysql.connector模块,将数据传递到字符串值%s
我无法将数据传递到%s令牌。我环顾四周,发现这个Mysql模块以不同的方式处理%s令牌,出于安全原因,应该对其进行转义,我的代码抛出了这个错误 mysql.connector.errors.ProgrammingError:1064(42000):您的数据库中有一个错误 SQL语法;查看与您的MySQL服务器版本对应的手册以了解更多信息 在第1行“%s”附近使用的正确语法 如果我这样做:Python mysql.connector模块,将数据传递到字符串值%s,python,mysql,Python,Mysql,我无法将数据传递到%s令牌。我环顾四周,发现这个Mysql模块以不同的方式处理%s令牌,出于安全原因,应该对其进行转义,我的代码抛出了这个错误 mysql.connector.errors.ProgrammingError:1064(42000):您的数据库中有一个错误 SQL语法;查看与您的MySQL服务器版本对应的手册以了解更多信息 在第1行“%s”附近使用的正确语法 如果我这样做: sql_insert = ("INSERT INTO `Products` (title) VALUES(%
sql_insert = ("INSERT INTO `Products` (title) VALUES(%s)"),(data)
我得到一个元组错误
import mysql.connector
from mysql.connector import errorcode
cnx = mysql.connector.connect (user='userDB1', password='UserPwd1',
host='somedatabase.com', database='mydatabase1')
cursor = cnx.cursor()
sql_insert = ("INSERT INTO `Products` (title) VALUES(%s)")
data=('HelloSQLWORLD')
cursor.execute(sql_insert,data)
cnx.commit()
cnx.close()
Python字符串格式为:
str1 = 'hello'
str2 = 'world'
'%s, %s' % (str1, str2)
将%
与元组一起使用,而不是,
对于您的特定情况,请尝试:
cursor.execute(sql_insert % (data))
Python字符串格式为:
str1 = 'hello'
str2 = 'world'
'%s, %s' % (str1, str2)
将%
与元组一起使用,而不是,
对于您的特定情况,请尝试:
cursor.execute(sql_insert % (data))
不,不要按照@Jeon建议的方式来做——通过使用字符串格式,您将代码公开给它。相反,请正确参数化查询:
注意查询参数是如何放入元组的。不,不要按照@Jeon建议的方式进行操作-使用字符串格式将代码公开。相反,请正确参数化查询:
请注意查询参数是如何放入元组的。抱歉,必须进行向下投票,,
这里是完全有效的-它是execute()
参数之间的分隔符。execute()
的第二个参数是查询参数。这不是Pythonic vs not的问题,而是将参数插入查询的正确方法和错误方法。感谢您的理解。抱歉,我必须进行下一票,,
这里是完全有效的-它是execute()
参数之间的分隔符。execute()
的第二个参数是查询参数。这不是Pythonic vs not的问题,而是将参数插入查询的正确方法和错误方法。谢谢你的理解。谢谢你,这是我一直在寻找的答案,虽然@Jeon的解决方案会起作用,但这种方法最好是因为漏洞。谢谢你,这是我一直在寻找的答案,虽然@Jeon的解决方案会起作用,但这种方法最好是因为漏洞。