Documentation Home
MySQL 连接器/ODBC 发行说明  / MySQL 连接器/ODBC 版本 8.0 中的更改  /  MySQL Connector/Python 8.0.21 的变化(2020-07-13,全面上市)

MySQL Connector/Python 8.0.21 的变化(2020-07-13,全面上市)

添加或更改的功能

  • 在 macOS 上,官方支持的 Protobuf 版本是 3.12.0 之前的版本。(缺陷号 31390263)

  • 实施上下文管理器以定义运行时上下文以在执行 with 语句时建立。它被添加到经典协议中的 Connection 和 Cursor 对象,以及 X DevAPI 中的 Session。感谢 WEN-FENG SHIH 提供补丁。(错误#19586444、错误#71663、错误#28779784、错误#89113)

  • 为 X 协议连接添加了压缩支持。支持的压缩算法是zlib/deflatelz4。具体来说,支持的算法(按优先顺序排列)是 lz4_message 和 deflate_stream。压缩阈值设置为 1000 字节。

    新的compressX DevAPI 连接选项接受requireddisabledpreferred (默认)。

    • preferred:如果Connector/Python与服务端无法就算法或样式达成一致,则不使用压缩;这已记录下来。

    • required:与 preferred类似,但如果连接器和服务器无法达成协议,则连接会因错误而终止。

    • 禁用:不使用压缩。

  • 文档存储:连接器/Python 现在为集合提供 JSON 模式验证,以强制执行文档在允许插入或更新之前必须遵守的特定结构。模式验证由服务器执行,如果集合中的文档与模式定义不匹配或者服务器不支持验证,则服务器会返回一条错误消息。

    schema.create_collection方法添加了一个新的验证参数作为 JSON 模式规范的字典或字符串表示形式。执行级别(默认情况下为offstrictstrict和架构定义按照此示例指定:

    coll = schema.create_collection("longlang", validation={
        "level": "strict",
        "schema":   {
            "id": "http://json-schema.org/geo",
            "$schema": "http://json-schema.org/draft-06/schema#",
            "description": "A geographical coordinate",
            "type": "object",
            "properties": {
                "latitude": {
                    "type": "number"
                },
                "longitude": {
                    "type": "number"
                }
            },
            "required": ["latitude", "longitude"]
        }
    })

    此外,一种新schema.modify_collection 方法允许重置现有集合的架构验证。validation集合选项必须包含修改后的值levelschema值,或两者都包含。

修正错误

  • connect_timeout 选项适用于所有阻塞套接字操作,但现在正确地仅适用于建立连接时的超时。(缺陷号 30996790)

  • 在 X DevAPI 实现中,在 DATETIME 类型中使用小数部分时会引发错误。错误:“ValueError:未处理的日期时间映射方案”(缺陷号 30950184)

  • 由于 MySQL 将 TEXT 类型存储为 BLOB,将 JSON 存储为 LONGBLOB,因此 TEXT 和 JSON 类型现在转换为 str,其余 BLOB 类型转换为字节。例如,以前,仅包含数字的 TEXT 类型的列被连接器/Python 读取为 type=integer。(缺陷 #29808262,缺陷 #95437)

  • 连接器/Python 假定 MySQL 库在编译 C 扩展时位于 lib/ 下,但现在使用 mysql_config 标志来添加正确的包含和库路径。感谢 Daniël van Eeden 提供补丁。(漏洞 #29181907,漏洞 #93846)

  • 使用 X DevAPI 时,尝试使用 Table 对象更改值会产生“‘字段列表’中的未知列‘doc’”异常。(错误#28627768,错误#27602636)