python orm框架有哪些

news2025/1/12 8:52:03

ORM概念

ORM(Object Ralational Mapping,对象关系映射)用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作实体对象的属性和方法。ORM技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化  。

Python中常用的ORM

SQLObject

SQLObject是一种流行的对象关系管理器,用于为数据库提供对象接口,其中表为类,行为实例,列为属性。

SQLObject包含一个基于Python对象的查询语言,使SQL更抽象,并为应用程序提供了大量的数据库独立性。

优点:

采用了易懂的ActiveRecord模式

一个相对较小的代码库

缺点:

方法和类的命名遵循了Java的小驼峰风格

不支持数据库session隔离工作单元

Storm

Storm是一个介于单个或多个数据库与Python之间映射对象的Python ORM。为了支持动态存储和取回对象信息,它允许开发者构建跨数据表的复杂查询。Stom中table class不需要是框架特定基类的子类 。每个table class是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采用了数据映射模式,其工作单元主要使得有必要限制所有的数据库操作代码到一个特定的数据库session,在该session中控制每个对象的生命周期 。

优点:

企业级API,使得代码有健壮性和适应性

灵活的设计,使得能轻松写复杂查询

缺点:

工作单元概念不常见

重量级API,导致长学习曲线

总结

相比其他的ORM,SQLAlchemy意味着,无论你何时写SQLAlchemy代码, 都专注于工作单元的前沿概念 。DB Session的概念可能最初很难理解和正确使用,但是后来你会欣赏这额外的复杂性,这让意外的时序提交相关的数据库bug减少到0。在SQLAlchemy中处理多数据库是棘手的,因为每个DB session都限定了一个数据库连接。但是,这种类型的限制实际上是好事, 因为这样强制你绞尽脑汁去想在多个数据库之间的交互, 从而使得数据库交互代码很容易调试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1968817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5 postgresql 并行查询

并行扫描会占用更多的cpu/IO内存资源,开启的时候要小心配置。 大部分场景都能提高查询效率 之前有过一个生产案例,开启并行之后性能反而没有普通的好,原因就是占有了太多资源,查询慢了,增加表锁概率,产生…

ISO 14001:引领企业绿色革命的环境管理体系

ISO 14001 以其预防为主、系统化管理的特点,在众多管理体系中脱颖而出。该标准强调通过识别和控制环境因素,提前预防潜在环境问题,从根本上减少企业对环境的负面影响。这种预防性管理模式,不仅能够有效保护环境,还能降…

.[datastore@cyberfear.com].mkp勒索病毒数据怎么处理|数据解密恢复

引言 近年来,网络安全威胁日益严峻,其中勒索病毒成为了一种极具破坏性的恶意软件。特别是[conkichinmodlconkichinmodl.com].mkp 、[datastorecyberfear.com].mkp勒索病毒,其通过加密用户文件并索取赎金的方式,给受害者带来了巨大…

15.列表框文本域和文件域

一、列表框 <!-- 下拉框&#xff0c;列表框 --><p>城市&#xff1a;<select name"城市"><option value"Guangzhou">广州</option><option value"Shenzhen" selected>深圳</option><option value&…

Zabbix 7.0 安装

在zabbix官网中有着比较完善的安装步骤&#xff0c;针对不同的系统都有。可以直接按照举例说明进行安装。本文只是针对其提供的安装步骤进行一些说明解释补充。 安装环境 操作系统版本&#xff1a;AlmaLinux 9.4&#xff08;10.10.20.200&#xff09;zabbix版本&#xff1a;7.…

A股震荡前行,3000点指日可待?

今天的A股&#xff0c;让人瞬间呆住了&#xff0c;你知道是为什么吗&#xff1f;盘面上出现2个耐人寻味的重要信号&#xff0c;一起来看看&#xff1a; 1、今天A股小幅洗盘&#xff0c;涨了一天就熄火了&#xff1f;让人瞬间呆住了。不慌&#xff01;敢于回踩&#xff0c;才能更…

两个好消息,你先听哪个?

1.第五大数据、人工智能与软件工程国际研讨会&#xff08;ICBASE 2024)成功申请IEEE出版&#xff0c;上线IEEE官网&#xff0c;欢迎投稿参会&#xff01;&#xff01;&#xff01; &#x1f4e3;IEEE独立出版&#xff0c;设置优秀评选 &#x1f525;院士加盟&#xff0c;中外高…

C嘎嘎浅聊string

那么这篇文章我们开始学习 c嘎嘎的string stl简介 什么是stl STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的 组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架 stl版本 原始版本、P.J.版本、RW版…

机械学习—零基础学习日志(高数18——无穷小与无穷小)

零基础为了学人工智能&#xff0c;真的开始复习高数 学习速度加快&#xff01; 无穷小定义 这里可以记住&#xff0c;无穷小有一个特殊&#xff0c;那就是零。 零是最高阶的无穷小&#xff0c;且零是唯一一个常数无穷小。 张宇老师还是使用了超实数概念来讲解无穷小。其实是…

在云服务器上自动化部署项目,jenkins和gitee

▮全文概述 在编写项目时&#xff0c;很头大的事情就是需要自己手动的上传jar包到服务器上启动。如果出现一点bug&#xff0c;就要重头上传和启动。这是一件很烦的事情&#xff0c;所以&#xff0c;可以使用jenkins和gitee实现项目的自动部署 ▮全流程 在本地提交代码到gitee …

kvm+glusterfs+pcs分布式存储构建kvm高可用群集。

kvmglusterfspcs分布式存储构建kvm高可用群集。 高可用指能在短时间内自动完成故障转移&#xff0c;kvm在实现故障自动转移的方式如果要考虑速度那么基于共享存储的迁移方法无疑是最快的。而共享存储的高可用就可以用glusterfs来实现。 glusterfs可以利用分布式复制卷兼顾了性能…

图解RocketMQ之消费者如何进行消息重试

大家好&#xff0c;我是苍何。 在上一篇[[图解RocketMQ之生产者如何进行消息重试]]中分析了当生产者发送消息失败的时候&#xff0c;RocketMQ 是如何进行重试的。 最后留了一个问题&#xff0c;生产端的消息是重试 hold 住了&#xff0c;但如果消费者出现异常&#xff0c;消费…

leetcode53. 最大子数组和(java实现)

今天分享的题目是leetcode53题 本题的解题思路&#xff1a;贪心算法。 举个例子&#xff1a; nums [-2,1,-3,4,-1,2,1,-5,4]&#xff0c;如果说我们的累加和是负数那么就将其舍弃&#xff0c;换下一个位置从新进行累加&#xff0c;因为如果目前我们的累加和如果是负数那么还不…

Zotero的探索之路

下载安装 Zotero | Downloads&#xff1a;点击链接&#xff0c;不仅要下载软件本身&#xff0c;也要下载浏览器connector&#xff0c;这样就方便从网页抓取论文到zotero本地了&#xff0c;浏览器是使用插件导入下载包即可 导入文献方法 zotero自动下载&#xff08;推荐&#…

C 语言快速排序算法

升序排序 /*快速排序算法排序规则 */ int32_t CmpCb(const void* _a, const void* _b) {uint16_t* a (uint16_t*)_a;uint16_t* b (uint16_t*)_b;int32_t val 0;if (*a > *b){val 1;}else if (*a < *b){val -1;}else {val 0;}return val; }int main() {// 创建局部…

c++----类与对象(下)

当我们简单的学习了上一篇日期类。简单的理解并且使用了我们前面学习的知识。当然这还只是我们c的九牛一毛。并且我们的类与对象的知识还没学习完。今天我们来把类与对象的知识完善一下。 初始化列表 那么今天我们就不讲废话了&#xff0c;我们直接来主题。首先我们可以看到我…

大型语言模型入门

大型语言模型 快速、全面了解大型语言模型。学习李宏毅课程笔记。 ChatGPT 目前由OpenAI公司发明的非常火的人工智能AI应用ChatGPT&#xff0c;到底是什么原理呢&#xff1f; G&#xff1a;Generative(生成) P&#xff1a;Pre-trained(预训练) T&#xff1a;Transformer(一种…

手把手教你如何在Linux上轻松安装Python,告别编程入门难题

导语&#xff1a; Python作为当下最热门的编程语言之一&#xff0c;受到了越来越多人的喜爱。对于Linux用户来说&#xff0c;掌握如何在Linux上安装Python至关重要。今天&#xff0c;就让我带领大家一步步在Linux上安装Python&#xff0c;让你轻松迈入编程世界&#xff01; 一…

MATLAB(7)潮汐模型

一、前言 在MATLAB中模拟潮汐通常涉及到使用潮汐的理论模型&#xff0c;如调和常数模型&#xff08;Harmonic Constants Model&#xff09;&#xff0c;它基于多个正弦和余弦函数的叠加来近似潮汐高度随时间的变化。以下是一个简化的MATLAB代码示例&#xff0c;用于模拟一个基于…

centos在线安装部署2024年最新的docker版本

1.yum 包更新到最新 sudo yum update -y2.安装依赖软件包 sudo yum install -y yum-utils device-mapper-persistent-data lvm23.添加阿里的镜像&#xff0c;下载镜像速度比较快 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/dock…