SQLAlchemy 1.3.20 发布了。SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射(ORM)框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库访问。
本次更新内容如下:
ORM 相关
-
ArgumentError如果将的目标参数Query.join()设置为未映射的对象,则会引发一个更详细的信息。
-
修复了以下问题:对实际上不是映射属性的字符串属性名称(例如普通的 Python 描述符)使用加载程序选项时,将引发无效的 AttributeError;现在会出现错误提示。 ####引擎相关
-
修复了发送给非子类对象SQLAlchemyError或子类的非字符串对象 (如某些第三方方言)将无法正确字符串化的问题。
-
修复了在 sqlalchemy.exc 模块中未使用 SQLAlchemy 的标准后期导入系统的功能级别的导入。 ####SQL 相关
-
解决了pickle.dumps()针对Over构造的操作 会产生递归溢出的问题。
-
修复了一个错误,即当一个column()同时被添加到多个table()的情况下,不会发生错误。对于Column和 Table对象来说,这个错误被忽视了。现在会在发生这种情况时引发一个ArgumentError 。
PostgreSQL 相关
- 现在,通过将主机/端口组合传递给查询字符串,psycopg2 方言支持 PostgreSQL 多个主机连接。
- 调整Comparator.any()和 Comparator.all()方法,以实现对否定的直接“ NOT”运算,而不是否定比较运算符。
- 修复了以下问题:在ENUM测试过程中发出 CREATE TYPE 或 DROP TYPE 时,该类型将不查询架构转换图,以查看该类型是否存在。此外,修复了以下问题:如果在单个 DDL 序列中多次遇到相同的枚举,则“检查”查询将重复运行,而不是依赖于缓存的值。
MySQL 相关
- 调整了 MySQL 方言,使其能够正确括号化 MySQL 8 所接受的功能索引表达式。
- 与 with_for_update() 一起使用的 "skip_locked "关键字在 MariaDB 后端使用时将发出警告,然后将被忽略。在SQLAlchemy 1.4 中,这是一个过时的行为,因为请求 "skip locked "的应用程序正在寻找一个在这些后端上不可用的非阻塞操作。
- 修复了以下错误:使用 MySQL 多表格式针对 JOIN 的 UPDATE 语句如果没有 WHERE 子句,则无法包含目标表的表前缀,因为仅扫描 WHERE 子句以检测到“多表更新”那一点。现在,如果目标是 JOIN,则还将扫描目标,以将最左边的表作为主表,将其他条目作为其他 FROM 条目。
- 添加新的 MySQL 保留字:cube,lateral在 MySQL 8.0.1 和 8.0.14,分别增加; 这表示如果将这些术语用作表或列标识符名称,则将用引号引起来。
MSSQL 相关
-
修复了以下问题:Azure DW 的 SQLAlchemy 连接 URI authentication=ActiveDirectoryIntegrated(没有用户名和密码)没有以 Azure DW 实例可接受的方式构造 ODBC 连接字符串。 ####其他更新
-
修正了当调用Engine.dispose()时,以下池参数没有被传播到新创建的池中的问题: pre_ping,use_lifo。另外,recycle和 reset_on_return参数现在会被传播到 AssertionPool 类中。
-
现在,当尝试使用关联代理元素作为纯列表达式从 SQL 函数中 SELECTed 或在 SQL 函数中使用时,会引发一个错误提示;目前不支持这种用例。
-
修复了针对 Pytest 6.x 运行时测试套件中的不兼容性。
注意:本文归作者所有,未经作者允许,不得转载