python的orm框架,orm开发框架有哪些
ORM概念
ORM(Object relational Mapping)用于将对象模型表示的对象映射到基于SQL的关系模型数据库结构。这样我们在具体操作实体对象的时候,就不需要处理复杂的SQL语句,只需要简单的操作实体对象的属性和方法。ORM技术提供了对象和关系之间的桥梁,通过它前台的面向对象数据和数据库中的关系数据可以相互转换。
Python中常用的ORM
SQLObject
SQLObject是一个流行的对象关系管理器,用于为数据库提供对象接口,其中表是类,行为实例,列是属性。
SQLObject包含了一种基于Python对象的查询语言,这使得SQL更加抽象,并为应用程序提供了大量的数据库独立性。
优势:
采用简单易懂的ActiveRecord模式。
相对较小的代码库
缺点:
方法和类的命名遵循Java的小驼峰风格。
不支持数据库会话隔离工作单元。
相关:《Python基础教程》
Storm
Storm是一个Python ORM,它在一个或多个数据库和Python之间映射对象。为了支持对象信息的动态存储和检索,它允许开发人员跨数据表构建复杂的查询。Stom中的Table类不需要成为特定于框架的基类的子类。每个表类都是sqlobject的子类。SQLObject.
优势:
轻量级API、短学习曲线和长期可维护性
不需要特殊的类构造函数,也没有必要的基类。
缺点:
强制程序员手动编写由表创建的DDL语句,而不是从模型类中自动派生。
Storm贡献者必须将其贡献的版权交给Canonical。
Djangos ORM
因为Django的ORM紧密嵌入在web框架中,所以即使有可能,也不建议在独立的非Django Python项目中使用它的ORM。
Django是最流行的Python web框架,它有自己的ORM。与SQLAlchemy相比,Django的ORM更适合直接操作SQL对象,它公开了数据表和类似Python的SQL对象的简单直接的映射。
优势:
易于使用,学习曲线短
和Django紧密收集,在使用Django的时候,用既定的方法操作数据库。
缺点:
难以处理复杂的查询,迫使开发人员返回到原生SQL
与Django的紧密集成使得它很难在Django环境之外使用。
peewee
优势:
Django风格的API使其易于使用。
轻量级,易于与任何web框架集成。
缺点:
不支持自动架构迁移。
编写多对多查询并不直观。
SQLAlchemy
SQLAlchemy采用数据映射模式,其工作单元主要是使所有的数据库操作代码都必须限制在一个特定的数据库会话中,在这个会话中,每个对象的生命周期都是受控的。
优势:
企业API使得代码健壮且适应性强。
灵活的设计使得编写复杂的查询变得容易。
缺点:
工作单元的概念并不常见。
重量级API,导致漫长的学习曲线
总结
与其他ORM相比,SQLAlchemy意味着无论你何时编写SQLAlchemy代码,你都会关注工作单元的前沿概念。DB Session的概念一开始可能很难理解和正确使用,但随后你会体会到这种额外的复杂性,它将与意外顺序提交相关的数据库错误减少到0。在SQLAlchemy中处理多个数据库很棘手,因为每个DB会话定义一个数据库连接。然而,这种类型的限制实际上是一件好事,因为它迫使你绞尽脑汁去思考多个数据库之间的交互,从而使数据库交互代码易于调试。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。