Sqlalchemy 1.4.0发布

2021-03-17 19:02:49

在1.4系列中的三个测试版中,终于游览1.4.0版。这是在至少年度最广泛的SQLALCHEMY中最广泛的释放,其中包括COREAND ORM中最突出的API的重新考虑,大大修订内部,以及各种重要的新遗产和能力。

SQLALCHEMY 1.4建立自己作为SQLALCHEMY 2.0项目的起点,这将完全移动到Python 3,只能在1.4.0版中最终完成新的API。

现在统一用于为Coreand ORM生成选择和其他SQL语句的方法围绕修改和更能力的选择()构造,使得针对使用相同API和模式组成的核心或ORM上下文旁边的SQL查询。 session.execute()和connection.execute()方法已对齐,以便转换核心和orm查询和结果集是无缝的,并且SystemsBehaving与彼此一样实用。新的强调单纯性和明确的一致性打算允许学习和验证Sqlalchemy更加简单,同时还支持新的PythonParadigms,如Asyncio和Pep-484打字。

修订后的声明性映射系统,为许多新映射范例提供支持,包括使用装饰器而不是基本标签,而是对Python DataClasses的显式支持,以及" imperativemappings"这是与声明类注册表集成的经典Mapper()操作的改进版本。

核心Andorm的SQL编译普遍透明缓存。这取代了"烘焙查询缓存"先前版本的系统对ORM提供了一个可选的SQL缓存系统,具有新的方法,即在核心和ORM中为绝大多数DML和DQLSTATEMED提供全新的方法。该系统不仅缓存了语句的SQL字符串,还缓存了其CommassedResult处理基础结构,用于为每个查询生成新行和ormobject实例。

对于核心引擎的新修订的交易模型,也是更简单的orm会话,消除了传统Apisthat变得令人困惑,并以更稳定的方式运作。通过将未来= TrueFlag传递给Create_Engine()函数以及Session()构造函数,可以在1.4下完全启用新的交易模型。

对核心和orm的Python Asyncio完全支持。此Newsystem利用Greenlet上下文切换库,以适应在非常薄的异步前端的Sqlalchemy的适应直接针对Asyncio事件循环,不需要线程执行器。到目前为止,迄今为止包含对Asyncpg和AIOMySQL的支持。

大大改善了orm查询可扩展性,使用新的钩子和选项包括sessionevents.do_orm_execute()钩子和with_loader_criteria()函数,它们一起可以可靠地和预测地监测和修改所有ORM查询的额外标准; do_orm_execute()本身证明它的价值现在是唯一的钩子才能实现"水平分片" (在许多数据库中复用一个单板)和" dogpilecaching" (用缓存的结果对象预先抢占查询)示例。

现在正在进行对PEP-484和Mypy的本机支持,其中包含所有新的MYPY插件的Firstalpha版本,它与新公布的存根库SQLALCHEMY2-STUB一起运行。

没有数百个共同之传的帮助,释放1.4不会有可能,以及我们最近扩大的专用维护者团队;我们希望为Federico Caselli,Gord Thompson,Jonathanvanasco和Ramon Williams提供巨大的感谢,以便在百分之百名和努力实施主要新功能的努力以及我们的频繁用户支持贡献者以及亚历克斯格伦霍尔姆和西蒙国王。

对于从1.3迁移的用户,第一个停止是1.4中的新增功能,该文件将概述如何开始使用Qlalchemy 1.4。