SQLAlchemy 1.4.3 发布,Python ORM 框架

来源: OSCHINA
编辑: Alias_Travis
2021-03-27

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 的支持,包括检测基于字符串的枚举与使用Python enum.Enum

postgresql

  • 修正了在 PostgreSQL 中,表的身份列在混合大小写名称中的反映。

sqlite

  • 增加了对与 SQLAlchemy asyncio 扩展一起使用的 aiosqlite 数据库驱动程序的支持。
  • 修复了在 1.4 版本中退步的 pysqlcipher dialect,使其正确连接,并增加了测试 + CI 支持,使驱动保持在工作状态。现在 dialect 默认导入 Python 3 的 sqlcipher3 模块。

更多详情可查看:https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-1.4.3

展开阅读全文
2 收藏
分享
加载中
更多评论
0 评论
2 收藏
分享
返回顶部
顶部