Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复';MySQLConnection';对象没有属性';转义字符串';_Mysql_Python 3.x_Mysql Connector Python - Fatal编程技术网

如何修复';MySQLConnection';对象没有属性';转义字符串';

如何修复';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

我是python新手。以前我使用PHP和MySQL;现在学习python。现在,我正在学习使用MySQL

我已使用以下代码连接到数据库:

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.1mysql\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))