社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

SQLAlchemy 2.0.0正式发布,Python ORM框架

OSC开源社区 • 2 年前 • 529 次点击  
出品 | OSC开源社区(ID:oschina2013)
SQLAlchemy 2.0.0 是 SQLAlchemy 2.0 系列的首个可用于生产环境的版本,现已正式 GA。
SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象映射 (ORM) 框架。它包含整套企业级持久化模式,专门用于高效和高性能的数据库访问。
2.0 旨在适应现代化 Python 的实际使用,开发团队花费了三年多的时间来升级 SQLAlchemy 用例模型和架构。他们表示,自 2006 年 SQLAlchemy 发布第一个版本以来出现了三个主要的 Python 范式:Python 3、pep-484 类型支持和 asyncio。此次 SQLAlchemy 的 2.0 更新正是为了适应 Python 社区的不断变化。而且与 16 年前相比,Python 社区的规模变得更大,拥有更多新的开发者,他们对严格性、易用性,以及在文档方面有更高的标准。
据介绍,SQLAlchemy 2.0 系列的历史始于四年前的 2018 年 8 月 8 日,其中包含一些关于如何统一 SQLAlchemy 的核心概念和 ORM 查询的简短想法。而真正的 “SQLAlchemy 2.0” 概念的第一个计划于当年 11 月形成,主要集中在大幅简化 Core 执行和事务 API,以及寻求跨 Core 和 ORM 统一查询这两个领域。
基础概念的变化非常明显,以至于 SQLAlchemy 2.0 分为两个主要阶段。第一阶段是 SQLAlchemy 1.4 系列,它提供了一个全新的统一 Core/ORM SQL 查询系统,同时构建在一个新的通用语句缓存架构之上。此阶段为 SQLAlchemy 2.0 的 SQL 构建方法(最小 pep-484 类型支持)提供了完整的实现,同时完全维护了遗留的查询 API。与此版本一起,一个全面的 迁移路径 灵感来自 Python 2->3 迁移过程中的经验教训,它描述了如何移植应用程序,以便它们可以继续在 SQLAlchemy 1.4 中运行,同时完全向前兼容 SQLAlchemy 2.0。
第二阶段是 SQLAlchemy 2.0 系列,它删除了大部分已弃用的元素,将剩余的元素(主要是 Query)降级为长期 “遗留” 状态,仅完全迁移至 Python 3,同时添加了许多在新架构之上构建的新功能,充分利用 Python 3 特性(包括数据类、枚举、内联注释)以及新的统一查询架构。
这种方法的关键优势在于,最重要和迄今为止风险最大的架构更改,即在新缓存层之上重写 Core/ORM 查询的更改,已经在 SQLAlchemy 1.4 的生产环境中使用了将近两年。因此,虽然 SQLAlchemy 2.0 在被所有开发者使用后肯定会有很多新问题,但它们不应该是 “基础方法中的新裂缝”,因为架构基础已经被广泛使用。
官方预计绝大多数问题将与新类型系统,以及现有应用程序调整以使用新 API 的问题有关。
SQLAlchemy 2.0 是一个非常大的版本更新,它有两个迁移指南:
  • Major Migration Guide - 介绍了如何使应用程序达到 API 兼容性,以便能够在 SQLAlchemy 1.4 或 2.0 中同等运行

  • SQLAlchemy 2.0 新功能 - 提供了应用程序在 SQLAlchemy 2.0 上运行后可用的所有新功能和 API。

详细更新说明查看发布公告:https://www.sqlalchemy.org/blog/2023/01/26/sqlalchemy-2.0.0-released/


END



聊聊企业开源的底层逻辑



这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/151838