SQLAlchemy 1.4.3 发布,Python ORM 框架
SQLAlchemy 是 Python SQL 工具箱和对象关系映射器,它为应用程序开发人员提供了 SQL 的全部功能和灵活性。它提供了一整套知名的企业级持久性模式,旨在高效、高性能地访问数据库,并被适配为一种简单的 Pythonic 域语言。
SQLAlchemy 1.4.3 版本的更新内容如下:
orm
- 修正了一个 python 2.7.5(CentOS 7 上的默认版本)无法导入 sqlalchemy 的 bug,因为在这个版本的 Python 上,
exec "statement"和exec("statement")的行为方式并不相同。我们使用了兼容性的exec_()函数来代替。 - 修正了一个当在属性中使用
Select.correlate_except()来控制相关性时,使用相关子查询和column_property()的 ORM 查询将无法正确地关联包围子查询或 CTE 的错误。 - 修正了新的“relationship with criteria”功能与使用新的“lambda SQL”功能(包括 selectinload 和 lazyload 等加载器策略)的结合可能会失败的 bug,以应对多态加载等更复杂的情况。
- 修复了对
ClauseElement.params()方法的支持,使ClauseElement.params()方法能够正确地与Select对象一起工作,该对象包括跨 ORM 关系结构的连接,这是 1.4 中的一个新特性。 - 修正了关系加载器机制内部产生"在 2.0 中删除"警告的问题。
orm declarative
- 修正了每类级别上的
.metadata属性不会被遵循的回归问题.
engine
- 将
ResultProxy名称恢复到sqlalchemy.engine命名空间。这个名字指的是LegacyCursorResult对象。
mypy
- 添加了对 Mypy 扩展的支持,以正确解释使用
as_declarative()函数以及registry.as_declarative_base()方法生成的声明式基类。 - 修正了 Mypy 插件中 Python 类型检测
Boolean列类型会产生异常的错误;另外实现了对Enum的支持,包括检测基于字符串的枚举与使用Pythonenum.Enum。
postgresql
- 修正了在 PostgreSQL 中,表的身份列在混合大小写名称中的反映。
sqlite
- 增加了对与 SQLAlchemy asyncio 扩展一起使用的 aiosqlite 数据库驱动程序的支持。
- 修复了在 1.4 版本中退步的
pysqlcipherdialect,使其正确连接,并增加了测试 + CI 支持,使驱动保持在工作状态。现在 dialect 默认导入 Python 3 的sqlcipher3模块。
更多详情可查看:https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.3