Python 的 ​ORM(Object-Relational Mapping)工具浅讲

SQLAlchemy相关讲解

1. SQLAlchemy 是什么?

  • ​定义:一个 Python 的 ​ORM(Object-Relational Mapping)工具,允许开发者通过 Python 类与对象操作数据库,而非直接编写 SQL。
  • ​核心组件:
    • ​Core:底层 SQL 表达式语言,提供数据库无关的 SQL 操作接口。
    • ​ORM:基于 Core 的高层抽象,将数据库表映射为 Python 类(模型),记录映射为对象。
  • ​适用场景:
    • 需要灵活操作数据库的 Python 应用。
    • 希望避免 SQL 注入攻击。
    • 需要跨数据库兼容(如 SQLite、MySQL、PostgreSQL)

2. 核心概念

2.1 模型

​定义:通过 Python 类表示数据库表

2.2 会话(Session)

  • ​作用:管理数据库操作的上下文,负责事务提交、回滚和对象状态跟踪
  • 生命周期:
    • 创建会话:session = Session(engine)
    • 操作数据:增删改查。
    • 提交或回滚:session.commit() 或 session.rollback()
    • 关闭会话:session.close()

2.3 引擎(Engine)

  • 作用:连接数据库的核心接口,管理连接池。
  • ​创建方式:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///data.db')

3. 基本操作

3.1 创建记录

new_user = User(name="Alice", email="alice@example.com")
session.add(new_user)
session.commit()

3.2 查询记录

  • 简单查询
user = session.query(User).filter_by(name='Alice').first()
  • ​复杂查询​(使用 SQL 表达式):
from sqlalchemy import or_
users = session.query(User).filter(or_

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

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

相关文章

蓝桥杯真题——洛谷Day13 找规律(修建灌木)、字符串(乘法表)、队列(球票)

目录 找规律 P8781 [蓝桥杯 2022 省 B] 修剪灌木 字符串 P8723 [蓝桥杯 2020 省 AB3] 乘法表 队列 P8641 [蓝桥杯 2016 国 C] 赢球票 找规律 P8781 [蓝桥杯 2022 省 B] 修剪灌木 思路:对某个特定的点来说有向前和向后的情况,即有向前再返回到该位置…

matrix-breakout-2-morpheus 靶机----练习攻略 【仅获取shell】

【此练习仅做到反弹shell】 1.靶机下载地址 https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova 2. 打开靶机,kali使用nmap扫描同C段的主机 找到靶机ip 确保靶机和kali网卡均为NAT模式 先查看kali的ip nmap 192.168.182.1/24 …

Flutter中Align的使用说明

又失业了,作为一个高龄Android程序员今年找工作真难呀。现在Flutter是必需技能了,所以最近在自学。所用书籍叫《Flutter实战》,如下 如今已看了100多页,发现这本书写得……有点赶吧,好几处讲得不清不楚,而关…

java八股文之常见的集合

一、数组的索引为什么从0开始? 寻址公式: 数组的首地址索引乘以存储数据的类型大小 在根据数组索引获取元素的时候,会用索引和寻址公式来计算内存所对应的元素数据。如果数组的索引从1开始,寻址公式中,就需要增加一次…

用ASCII字符转化图片

代码 from PIL import Image# 定义 ASCII 字符集,从最暗到最亮 ASCII_CHARS "%#*-:. "def resize_image(image, new_width100):width, height image.sizeratio height / widthnew_height int(new_width * ratio)resized_image image.resize((new_wi…

详解Sympy:符号计算利器

Sympy是一个专注于符号数学计算的数学工具,使得用户可以轻松地进行复杂的符号运算,如求解方程、求导数、积分、级数展开、矩阵运算等。其中比较流行的深度学习框架pytorch的用到了Sympy,主要用于将模型的计算图转换为符号化表达式,以便进行分…

高频SQL 50 题(持续更新)

SQL的编写与运用 0. 写在前面 最近学习了数据库系统概论,其中涉及到了关于SQL语句的编写,感觉理论知识不足以让我掌握相关的编写方式,因此选择刷力扣上的题目进行复习巩固。 时间不是很多,可能不会经常更新,有时间写…

【Python】12、函数-02

文章目录 1. 返回值2.文档字符串3. 作用域4. 命名空间 1. 返回值 返回值就是函数执行以后返回的结果,可以通过return来指定函数的返回值。返回值可以通过变量接收返回值 return 后可以返回任意的对象,甚至是一个函数如果仅写一个return或者不写return&…

Unity插件-适用于画面传输的FMETP STREAM使用方法(三)基础使用

目录 一、插件介绍 二、组件介绍 三、Game View Streaming 1、使用 FM Network UDP 的基本设置 Server Scene Client Scene 2、使用使用 FM WebSocket 的基本设置 四、Audio Streaming 五、Microphone Streaming 一、插件介绍 ​​​​​​Unity插件-适用于画面传输的…

如何为预训练模型进行领域适配:全参数微调、LoRA 还是 Prompt Tuning?

目录 如何为预训练模型进行领域适配:全参数微调、LoRA 还是 Prompt Tuning? 1. 全参数微调(Full Fine-tuning) 适用场景 优缺点 示例代码(使用 Hugging Face Transformers 进行全参数微调) 2. LoRA&am…

C++ —— 线程同步(互斥锁)

C —— 线程同步(互斥锁) 线程同步互斥锁(互斥量)测试代码mutex互斥锁 线程同步 线程同步:多线程协同工作,协商如何使用共享资源。 C11线程同步包含三部分内容: 互斥锁(互斥量&…

UI设计中的加载动画:优化用户体验的细节

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在数字产品泛滥的今天,用户对体验的要求早已超越功能本身。一个看似简单的加载动画&…

SpringBoot3+Vue3实战(Vue3快速开发登录注册页面并对接后端接口)(4)

目录 一、SpringBoot3Vue3实现基本增删改查。前后端通信交互、配置后端跨域请求。数据批量删除。(博客链接) 二、SpringBoot3Vue3快速开发登录、注册页面并实现对接。 &#xff08;1&#xff09;操作数据表employee(员工信息表)。 <1>修改employee表的字段组成。 <2&g…

Python标准库中bisect模块的bisect_right()函数在网格交易中的应用

本文将深入探讨Python标准库中bisect模块的bisect_right()函数在网格交易中的具体应用。 bisect模块 bisect模块是Python标准库中的一个模块&#xff0c;提供了对有序列表的插入和搜索操作的支持。它基于二分查找算法&#xff0c;可以高效地在有序列表中查找或插入元素&#x…

Excel(函数篇):IF函数、FREQUNCY函数、截取函数、文本处理函数、日期函数、常用函数详解

目录 IF函数等于判断区间判断与AND函数、OR函数一同使用IFNA函数和IFERROR函数 FREQUNCY函数、分断统计LEFT、RIGHT、MID截取函数FIND函数、LEN函数SUBSTITUTE函数ASC函数、WIDECHAR函数实战&#xff1a;如何获取到表中所有工作簿名称文本处理函数TEXT函数TEXTJOIN函数 日期函数…

生成PDF文件:从html2canvas和jsPdf渲染到Puppeteer矢量图

刚刚实现而已&#xff1a;第一次明白&#xff0c;双击或file:///打开html文件&#xff0c;居然和从localhost:3000打开同一个html文件有本质的区别。 字体居然还能以Base64代码嵌入到网页&#xff0c;只是太大太笨。 需要安装node.js&#xff0c;npm安装更多依赖&#xff1a;…

Git 分支删除操作指南(含本地与远程)

&#x1f680; Git 分支删除操作指南&#xff08;含本地与远程&#xff09; 在多人协作的开发过程中&#xff0c;定期清理已合并的临时分支&#xff08;如 feature/*、bugfix/*、hotfix/* 等&#xff09;可以保持仓库整洁&#xff0c;避免混乱。 &#x1f4cc; 分支命名规范回…

Qt中打开windows的cmd窗口并显示

在windows上&#xff0c;用Qt的GUI程序打开另一个程序&#xff0c;使用QProcess即可&#xff0c;并且被打开的程序通常也会显示出来&#xff0c;但是如果想要打开dos窗口并显示&#xff0c;并执行其中的命令或者批处理&#xff0c;则需要使用QProcess提供的windows特有的函数QP…

Modbus TCP到RTU:轻松转换指南!

Modbus TCP 到 RTU&#xff1a;轻松转换指南&#xff01; 在现代工业自动化领域&#xff0c;Modbus TCP和Modbus RTU两种通信协议因其高效、稳定的特点被广泛应用。然而&#xff0c;随着技术的发展和设备升级的需求&#xff0c;经常会遇到需要将这两种协议进行互相转换的场景。…

微信小程序订阅消息发送消息,点击消息进入小程序页面

1、在小程序官网订阅消息选用或创建消息模板获取模板ID可多个 如图&#xff1a; 2、微信小程序前端页面发送请求订阅权限 请求模板id的权限可以是一个可以是多个&#xff0c;用户同意订阅&#xff0c;获取code传递给后端——后端拿到code生成唯一的openid用于发送订阅消息 注…