如何修复';MySQLConnection';对象没有属性';转义字符串';
我是python新手。以前我使用PHP和MySQL;现在学习python。现在,我正在学习使用MySQL 我已使用以下代码连接到数据库:如何修复';MySQLConnection';对象没有属性';转义字符串';,mysql,python-3.x,mysql-connector-python,Mysql,Python 3.x,Mysql Connector Python,我是python新手。以前我使用PHP和MySQL;现在学习python。现在,我正在学习使用MySQL 我已使用以下代码连接到数据库: import mysql.connector cnx = mysql.connector.connect(user="myUser", password="myPass", host="localhost", database="myDb") 连接似乎工作正常,我可以使用“游标”从数据库查询项目: 问题是,当我使用像下面这样的连接的“escape_stri
import mysql.connector
cnx = mysql.connector.connect(user="myUser", password="myPass", host="localhost", database="myDb")
连接似乎工作正常,我可以使用“游标”从数据库查询项目:
问题是,当我使用像下面这样的连接的“escape_string”方法时:
escaped_string = cnx.escape_string("some SQL invalid 'terms'")
我得到:
AttributeError: 'MySQLConnection' object has no attribute 'escape_string'.
我认为这是一个与mysql_连接器相关的bug,所以我认为更新可能会有所帮助
pip安装--升级mysql\u连接器
这更新了mysql_连接器,但没有解决问题
我使用的是python 3.7.1和mysql\u connector 2.1.6我不知道为什么会发生这种情况,但您可以使用python创建自己的
转义字符串。
不要做:
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)" % (val1, val2)
cursor.execute(sql)
做:
您可以通过以下链接查找更多解决方案:
和
我对Python一无所知,但一般来说,字符串转义是一种过时的技术,在编程教程中非常流行。注入外部输入的正确方法是使用预先准备好的语句(而且更简单、更简洁)。指针:根据文档,escape\u string
是MySQL
类的方法(请参阅),而不是MySQLConnection
类的方法(其方法在中列出)。我对图书馆不太了解,不能再多提建议了。@阿尔瓦罗冈萨雷斯你说得对。这是一种更好的方法。然而,我看到了一些在连接上使用escape_字符串的例子,我想自己尝试一下,但当发现它在我的代码中不起作用时,我感到困惑。所以,提出了一个问题。@MarkAmery你找到我了!这是正确的理由。我可能在mysql.connector和MySQLdb api之间搞砸了,我已经看过了。马克默里已经指出了原因。我发现你的指导方针很好,一定会遵守。谢谢
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)" % (val1, val2)
cursor.execute(sql)
sql = "INSERT INTO TABLE_A (COL_A,COL_B) VALUES (%s, %s)"
cursor.execute(sql, (val1, val2))