-
不兼容的更改: 传递给的原始消息
errors.Error()
未以可以检索的方式保存。相反,该Error.msg
属性使用错误号和 SQLSTATE 值进行格式化。现在只有原始消息保存在Error.msg
属性中。可以通过打印或获取错误对象的字符串表示形式来获取格式化值以及错误号和 SQLSTATE 值。例子:try: conn = mysql.connector.connect(database = "baddb") except mysql.connector.Error as e: print "Error code:", e.errno # error number print "SQLSTATE value:", e.sqlstate # SQLSTATE value print "Error message:", e.msg # error message print "Error:", e # errno, sqlstate, msg values s = str(e) print "Error:", s # errno, sqlstate, msg values
(漏洞 #16933795)
-
单个单元测试的输出没有显示时间,这使得调试涉及测试执行时间变化的问题变得更加困难。unittest.py现在有一个新
--stats
选项可以运行测试并显示每个测试的运行时间。也可以将数据保存到 MySQL 服务器。当该
--stats-host
选项与其他选项一起给出时,例如--stats-user
,结果将保存到一个名为的表中myconnpy_X_Y_Z
。该表包含测试用例的名称和结合了 Python 和 MySQL 版本的列;例如,py27my55 或 py33my56。例如,要查看 MySQL 5.1 和 5.6 之间的区别,使用 Python 2.7,在使用 Connector/Python 1.1.0 运行测试用例后,使用以下语句:
SELECT test_case, py27my51, py27my56, (py27my56-py27my51) AS diff51 FROM myconnpy_1_1_0 WHERE (py27my56-py27my51) > 0.5;
(漏洞 #17028999)
Connector/Python 现在包含一个
mysql.connector.django
为 MySQL 提供 Django 后端的模块。此后端支持 MySQL 5.6 中的新功能,例如对时间数据类型的小数秒支持。有关详细信息,请参阅 连接器/Python Django 后端。-
MySQL 连接器/Python 现在支持具有以下特征的简单连接池:
在向请求者提供连接时,池会打开多个连接并处理线程安全。
连接池的大小在池创建时是可配置的。此后无法调整大小。
连接池可以在池创建时命名。如果没有给出名称,则使用连接参数生成一个。
可以从连接池或从中获取的连接中检索连接池名称。
可以有多个连接池。例如,这使应用程序能够支持到不同 MySQL 服务器的连接池。
对于每个连接请求,池提供下一个可用连接。不使用循环或其他调度算法。
可以重新配置池使用的连接参数。这些适用于此后从池中获得的连接。
config()
不支持 通过调用连接方法重新配置从池中获取的单个连接 。
可以受益于连接池功能的应用程序包括:
维护与多个 MySQL 服务器的多个连接并要求连接随时可用的中间件。
可以对 MySQL 服务器打开 更多“永久”连接的网站。
连接池实现涉及以下接口元素:
新模块
mysql.connector.pooling
提供了两个类:MySQLConnectionPool
实例化和管理连接池,PooledMySQLConnection
类似于MySQLConnection
但用于连接池中的连接。PoolError
对于与池相关的异常,会出现 一个新的异常。PoolError
是 的子类Error
。
有关详细信息,请参阅 连接器/Python 连接池。
在
fetchone()
or 之后fetchmany()
,由 返回的fetchall()
结果缺少一行。(漏洞 #17041412)-
以前,在连接关闭后执行语句会引发一个
OperationalError
不明确的错误。连接器/Python 现在返回客户端错误 2006,MySQL Server has gone away
以及一条额外的消息。该类
Error()
已扩展为接受新参数extra_msg
. 给出时,它附加在括号之间。例如:([2000] Unknown MySQL Error (Some extra message)
缺陷 #17022399) LOAD DATA LOCAL
对于大约 14MB 或更大的文件失败。(漏洞 #17002411)executemany()
在没有任何数据的情况下 调用会产生一个ProgrammingError
而不是什么都不做。(漏洞 #16660356)InternalError
如果有未读的结果,在事务回滚期间会引发 an 。该MySQLConnection.rollback()
方法现在使用未读结果而不是引发错误。(漏洞 #16656621)Python 2.6 和 2.7 在 使用
UnicodeDecodeError
时 引发了unicode_literals
一个数据库名称包含非拉丁 Unicode 字符的问题。(漏洞 #16655208)当执行语句
MySQLCursor.executemany()
时将 SQL 函数用作列值时, 该方法引发异常。INSERT
(缺陷 #69675,缺陷 #17065366)OperationalError
如果在有未读结果时关闭游标对象,则会引发 一个不清楚的问题。连接器/Python 现在提出一个InternalError
指示仍有未读结果。这提供的信息表明,为了避免错误,必须通过读取所有行来使用结果。(漏洞 #67649,漏洞 #17041240)