ORM概念
ORM(Object Ralational Mapping,对象关系映射)用于将对象模型表示的对象映射到基于SQL的关系模型数据库结构。这样,我们在具体操作实体对象的时候,就不需要处理复杂的SQL语句,只需要简单的操作实体对象的属性和方法即可。 ORM技术提供了对象和关系之间的桥梁,前台的对象类型数据和数据库中的关系数据通过这个桥梁相互转换。
Python中常用的ORM
SQLObject
SQLObject 是一种流行的对象关系管理器,用于为数据库提供对象接口,其中表作为类、行为实例和列作为属性。
SQLObject 包括一种基于 Python 对象的查询语言,它使 SQL 更加抽象,并为应用程序提供了很多数据库独立性。
优点:
采用了易懂的ActiveRecord模式
一个相对较小的代码库
缺点:
方法和类的命名遵循了Java的小驼峰风格
不支持数据库session隔离工作单元
Storm
Storm 是一个 Python ORM,它在单个或多个数据库和 Python 之间映射对象。为了支持对象信息的动态存储和检索,它允许开发人员跨数据表构建复杂的查询。 Stom 中的表类不需要是特定于框架的基类的子类。每个表类都是 sqlobject.SQLObject 的子类。
优点:
清爽轻量的API,短学习曲线和长期可维护性
不需要特殊的类构造函数,也没有必要的基类
缺点:
强制程序员手动编写 DDL 语句来创建表,而不是自动从模型类派生
Storm的贡献者必须把他们的贡献的版权给Canonical公司
Django's 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框架集成
缺点:
不支持自动化 schema 迁移
多对多查询写起来不直观
SQLAlchemy
SQLAlchemy 采用数据映射模型,其工作单元主要使得有必要将所有数据库操作代码限制在特定的数据库会话中,其中每个对象的生命周期都受到控制。
优点:
企业级API,使得代码有健壮性和适应性
灵活的设计,使得能轻松写复杂查询
缺点:
工作单元概念不常见
重量级API,导致长学习曲线
总结
与其他 ORM 相比,SQLAlchemy 意味着无论何时编写 SQLAlchemy 代码,都要关注工作单元的前沿概念。 DB Session 的概念起初可能难以理解和正确使用,但稍后你将体会到额外的复杂性,这将与意外定时提交相关的数据库错误减少到 0。在 SQLAlchemy 中处理多个数据库很棘手,因为每个 DB 会话都是有限的到一个数据库连接。但是,这种限制其实是一件好事,因为它迫使你绞尽脑汁思考多个数据库之间的交互,从而使数据库交互代码易于调试。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python中所有函数的使用和介绍10/31
- ♥ 如何在 Python 中转换字符串大小写11/11
- ♥ python实例方法使用注意事项10/18
- ♥ 什么是 python3 数字格式输出?如何使用?01/14
- ♥ python十六进制数代表什么09/17
- ♥ python参数中默认值的强制执行01/10
内容反馈