SQLAlchemy 是 Python SQL 工具箱和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。它提供了一整套知名的企业级持久性模式,旨在高效、高性能地访问数据库,并被适配为一种简单的 Pythonic 域语言。
SQLAlchemy 1.4.40 版本的更新内容如下:
orm
-
[orm] [bug]
修正了在多态 SELECT 中多次引用 CTE 的问题,该问题可能导致同一 CTE 的多个 "克隆" 被构建,然后将这两个 CTE 触发为重复的。
engine
-
[engine] [usecase]
在 Core 中为
Connection
实现了新的Connection.execution_options.yield_per
执行选项,以反映 ORM 中可用的相同 yield_per 选项。 -
[engine] [bug]
修正了
Result
中的错误,在使用Connection.execution_options.stream_results
时,如果使用的 dialect 不支持明确的 "server side cursor" 设置,则不会使用缓冲的结果策略。 -
[engine] [bug]
添加了
FilterResult.yield_per()
,以便MappingResult
、ScalarResult
和AsyncResult
等结果实现能够访问该方法。
sql
-
[sql] [bug]
调整了字符串包含函数
.contains()
,.startswith()
,.endswith()
的 SQL 编译,以强制使用字符串连接操作符,而不是依赖加法操作符的重载
mypy
-
[mypy] [bug]
修正了 mypy 插件在默认使用 lambda 作为 Column 时的崩溃问题
asyncio
-
[asyncio] [bug]
当使用
AsyncConnection
或AsyncSession
作为上下文管理器时,特别是在__aexit()__
上下文管理器退出时,为连接和会话释放过程添加了asyncio.shield()
,在上下文管理器完成后释放对象。
postgresql
-
[postgresql] [bug]
修正了 psycopg2 dialect 中的问题,即为 #4392 实现的 "多主机" 功能,可以在查询字符串中以
?host=host1:port1&host=host2:port2&host=host3:port3
的形式传递多个host:port
对,但没有正确实现。
misc
-
[bug] [types]
修正了在装饰
ARRAY
数据类型时,TypeDecorator
不能正确代理__getitem__()
操作符的问题
更多详情可查看:https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.40