-
不兼容的更改: 以前的连接器/Python 系列具有单独的 Python 2 和 Python 3 代码库。对于 Connector/Python 2.0,源代码树已重新组织为具有单一代码库,以便于维护、测试和分发。
这种重组会导致行为发生不兼容的变化:使用“原始”游标时,返回值属于该
bytearray
类型。这是让 Python 2 和 3 返回相同数据所必需的。考虑以下示例:import mysql.connector cnx = mysql.connector.connect(raw=True) cursor = cnx.cursor() cursor.execute('SELECT 1') print(cursor.fetchall())
在 Connector/Python 1.x 中,输出为:
使用 Python 2:
[('1',)]
使用 Python 3:
[(b'1',)]
在 Connector/Python 2.0 中,对于两个 Python 版本,输出都是:
[(bytearray(b'1'),)]
要获得与 Connector/Python 1.x 中相同的值,请执行以下操作:
使用 Python 2:
str(bytearray(b'1'))
使用 Python 3:
bytes((bytearray(b'1'))
重要更改: 以前,要启用
LOAD DATA LOCAL
,客户端必须显式设置ClientFlag.LOCAL_FILES
标志。现在默认启用此标志。要禁用它,可以将 的allow_local_infile
选项connect()
设置为False
。对于生成多个结果集的存储过程,现在可以通过执行
CALL
语句来执行该过程并处理其结果。执行execute()
带有multi=True
参数的using语句,并使用返回的迭代器依次处理每个结果。(错误#73291,错误#19207922)-
连接器/Python 现在支持使用两个新选项的选项文件
connect()
:option_files
: 要读取的选项文件。该值可以是文件路径名(字符串)或路径名字符串序列。默认情况下,Connector/Python 不读取任何选项文件,因此必须明确给出此参数才能读取选项文件。按照指定的顺序读取文件。option_groups
: 如果读取了选项文件,则从选项文件中读取哪些组。该值可以是选项组名称(字符串)或组名称字符串序列。如果未给出此参数,则默认值为['client, 'connector_python']
读取[client]
和[connector_python]
组。
有关详细信息,请参阅 连接器/Python 选项文件支持。
-
该
mysql.connector.cursor
模块支持四个新的游标类:-
游标类将
MySQLCursorDict
每一行作为字典返回。每个字典对象的键是 MySQL 结果的列名。cursor = cnx.cursor(dictionary=True)
-
MySQLCursorBufferedDict
游标类类似于,但 在MySQLCursorDict
执行查询后获取整个结果集并缓冲行。cursor = cnx.cursor(dictionary=True, buffered=True)
-
游标类将
MySQLCursorNamedTuple
每一行作为命名元组返回。每一列都可以通过类元组对象的属性访问。cursor = cnx.cursor(named_tuple=True)
-
MySQLCursorBufferedNamedTuple
游标类类似于,但 在MySQLCursorNamedTuple
执行查询后获取整个结果集并缓冲行。cursor = cnx.cursor(named_tuple=True, buffered=True)
有关详细信息,请参阅 子类 cursor.MySQLCursor。
-
打包模块和支持文件已从主存储库和连接器/Python 的源包中删除。它们在 Connector/Python 1.x 系列中仍然可用。