SQLAlchemy 入门与 ORM 基础:用 Python 对象操作数据库
SQLAlchemy 入门与 ORM 基础用 Python 对象操作数据库这是一篇面向新手的技术博客。很多同学一听到操作数据库就想到写 SQL但其实在 Python 里我们可以用SQLAlchemy这种 ORM 框架像操作普通 Python 对象一样去增删改查几乎不用手写 SQL。一、什么是 SQLAlchemySQLAlchemy 是 Python 里最流行的ORMObject-Relational Mapping对象关系映射框架之一。它做了一件很巧的事把 Python 里的类/对象和数据库里的表/行一一对应起来。你操作的是 Python 对象它背后帮你翻译成 SQL 去执行。当然它也允许你直接写原生 SQL 混合使用。ORM 读音小知识SQLAlchemy 里的 Alchemy 读作 /ˈælkəmi/意思是炼金术——把代码炼成数据库操作还挺形象的。为什么要用它核心优势跨数据库兼容同一套代码底层可以换 MySQL、PostgreSQL、SQLite、Oracle 等只要换驱动和连接串不用死记 SQL 语法用 Python 风格写查询可读性好类型自动转换Python 的datetime自动对应数据库的DATETIME事务 关联查询复杂操作也有成熟支持从个人项目到企业级都能用。Core 与 ORM 两大模块SQLAlchemy 的内核分两层Core核心组件底层数据库交互引擎负责 SQL 表达式构建、连接管理ORM对象关系映射架在 Core 之上的封装实现对象 ↔ 表的映射。这是我们学习的重点。五大核心概念概念作用Engine引擎核心入口管理数据库连接由连接字符串创建决定数据库类型、地址、账号密码Session会话与数据库交互的桥梁所有增删改查都通过它完成相当于一个临时连接会话Base基类所有 ORM 模型类的父类子类会自动映射成数据库里的表Model模型一个 Python 类 一张表类属性 字段类实例 一行数据Column字段定义模型属性即表字段可指定类型、主键、非空、默认值等约束二、快速开始2.1 环境准备① 安装库以 MySQL 为例其他数据库驱动见下方说明其他数据库驱动PostgreSQLpip install psycopg2-binarySQLite无需额外安装Python 自带Oraclepip install cx_Oracle安装后验证无报错即成功② 准备数据库SQLAlchemy 只建表、不建库库要自己先建好2.2 创建 Engine连接数据库连接字符串格式数据库驱动://用户名:密码主机:端口/数据库名?参数root/123456换成你自己的账号密码sqlalchemy_demo要连接的库名需提前建好echoTrue调试神器能直接看到 SQLAlchemy 帮你拼的 SQL。2.3 定义 Base 与 Model模型常用字段类型Integer→ MySQL 的 INTString(n)→ VARCHAR(n)DateTime→ DATETIMEFloat→ FLOAT / DOUBLEBoolean→ TINYINT(1)常用字段约束参数类型说明primary_keybool是否为主键autoincrementbool / str是否自增nullablebool是否允许为空默认 Trueuniquebool是否唯一约束indexbool是否建普通索引defaultAnyPython 层面的默认值server_default表达式/字符串数据库层面的默认值如now()commentstr字段注释onupdateAny更新时自动赋值ondeletestr外键删除规则CASCADE / SET NULL 等namestr数据库真实字段名不写用属性名2.4 创建数据表执行后sqlalchemy_demo库里就会多一张user表去客户端看一眼结构验证一下。2.5 第一个增 / 查示例Session所有操作都绕不开 Session创建 → 操作 → 提交 → 关闭。 更推荐with写法自动关闭会话不用手动close()2.6 快速开始练习清单把上面几步串起来你其实已经走通了完整链路初始化配置导入create_engine、declarative_base、字段类型写好连接串创建engine再declarative_base()得到Base写模型类继承Base设__tablename__用Column()照着表结构映射字段加一条数据sessionmaker(bindengine)建工厂 → 工厂() 建会话 →add(对象)→commit()→close()。三、ORM 核心操作 CRUD实战中我们通常会把配置和模型抽成独立文件避免每个脚本都写一遍。3.1 抽取通用配置sqlalchemy_config.py3.2 模型类base_model.py 之后所有脚本都from sqlalchemy_config import SessionFactory和from base_model import User即可不用重复写连接逻辑。3.3 Read查询SQLAlchemy 查询核心是query()1.x 风格或select()2.0 风格下面以query()为主。① 基础查询② 条件查询filter③ 排序 分页④ 分组查询聚合函数用到func里的count / sum / avg / max / min函数作用func.count(列)数量func.sum(列)求和func.avg(列)平均值func.max(列)最大值func.min(列)最小值 分组查询里用到的Account模型含age字段与User定义方式完全一样本文未展开你照着User写一个即可。3.4 Create新增步骤建实例 →add→commit。3.5 Delete删除步骤查到 →delete→commit。3.6 Update更新步骤查到 → 改属性 →commit。四、本章重点速记SQLAlchemy 是 Python 最流行的 ORM用对象操作数据库少写 SQL内核两层Core引擎层 ORM映射层重点学 ORM五大件Engine / Session / Base / Model / Column标准流程create_engine→ 定义模型 →Base.metadata.create_all建表 →sessionmaker建会话 → CRUD →commit查询两大风格1.x 的session.query()和2.0 的select()文档里都给了建议两种都了解别忘了commit()——不提交改动只在内存里不会进库。五、常见问题 / 踩坑Q1导入declarative_base报弃用警告文档旧写法from sqlalchemy.ext.declarative import declarative_base仍能跑但 2.0 推荐from sqlalchemy.orm import declarative_base本文已采用新写法直接用即可。Q2代码里from sqlalchemy_config import ...报错那是把配置抽到了独立文件sqlalchemy_config.py见 3.1 节。确保这个文件和你的脚本在同一目录或已加入PYTHONPATH并且里面定义了SessionFactory和Base。Q3为什么add之后查不到数据忘记session.commit()了。只有提交事务数据才会真正写入数据库。Q4用with SessionFactory() as session还需要手动close()吗不需要with结束时自动关闭比手写close()更安全。Q5query()和select()该用哪个新项目建议优先学 2.0 的select()风格配合session.execute(stmt)但大量老教程和本文的条件/排序示例用的是query()两种都看得懂才不会被卡住。

相关新闻

计算机考试-表格-东方仙盟

计算机考试-表格-东方仙盟

2026/8/4 4:09:38 阅读更多 →
医疗大模型C端产品爆发前夜:视觉设计正在成为新的核心壁垒

医疗大模型C端产品爆发前夜:视觉设计正在成为新的核心壁垒

026年的医疗AI赛道,正在经历一个微妙但关键的转折——从“模型能力竞赛”转向“产品体验竞争”。今年1月,OpenAI正式推出OpenAI Health。数据显示,早在该产品正式发布之前,全球每周就有超过2.3亿人次在ChatGPT上咨询健康问题。这种…

2026/8/4 4:09:38 阅读更多 →
ChatGPT Plus已经够强了,为什么使用Codex后还是频繁遇到额度瓶颈?

ChatGPT Plus已经够强了,为什么使用Codex后还是频繁遇到额度瓶颈?

很多用户升级ChatGPT Plus以后,日常对话、写作、文件分析和代码问答都已经足够流畅。但真正开始使用Codex处理项目后,却会产生一种明显落差:明明没有写多少代码,为什么额度消耗得这么快? 明明只是修改一个功能&#xf…

2026/8/4 4:08:34 阅读更多 →

最新新闻

语义缓存管理

语义缓存管理

"怎么退换货"有无数种问法——精确缓存(完全相同字符串才命中)对这种场景几乎无效,每个改写都穿透到模型烧一遍 token。需要的是"语义"层面命中。 核心论点 语义缓存(Semantic Cache,按语义相似度…

2026/8/4 4:41:52 阅读更多 →
从一到无穷大 #74:智能全域巡检的产品形态与能力边界

从一到无穷大 #74:智能全域巡检的产品形态与能力边界

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录引言产品形态公有云已经走到哪里统一对象:UModel 到底统一了什么STAROps 主…

2026/8/4 4:41:52 阅读更多 →
终极Windows界面优化指南:用ExplorerPatcher完美定制任务栏与开始菜单

终极Windows界面优化指南:用ExplorerPatcher完美定制任务栏与开始菜单

终极Windows界面优化指南:用ExplorerPatcher完美定制任务栏与开始菜单 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher Windows界面…

2026/8/4 4:41:52 阅读更多 →
Agent 惊艳全场却瘫痪生产?20 个核心概念揭秘企业级 AI 应用落地真相!

Agent 惊艳全场却瘫痪生产?20 个核心概念揭秘企业级 AI 应用落地真相!

模型智商 只是上限, 工程体系 才决定底线 这两年,AI 圈最不缺的就是新词,特别是 “Agent” 。从智能体、数字员工、AI Copilot,到各种自动化助手,名称层出不穷。 但只要你真正带团队做过企业级 AI 应用的落地&#xff…

2026/8/4 4:41:52 阅读更多 →
若依框架深度解析:从RBAC权限到代码生成的企业级Java开发实践

若依框架深度解析:从RBAC权限到代码生成的企业级Java开发实践

1. 项目概述:为什么选择若依作为企业级项目的起点?如果你是一名Java开发者,或者正在寻找一个能快速搭建后台管理系统的框架,那么“若依”这个名字你大概率不会陌生。它不是一个新潮的AI框架,也不是一个底层算法库&…

2026/8/4 4:41:52 阅读更多 →
Python命令行参数解析:从sys.argv到argparse与click实战指南

Python命令行参数解析:从sys.argv到argparse与click实战指南

1. 从命令行到脚本:为什么参数传递是Python开发的必修课如果你写过Python脚本,尤其是那些需要处理不同输入、配置不同运行模式的脚本,那么你一定遇到过这个问题:如何让脚本“听话”地接收外部指令?是每次打开代码文件修…

2026/8/4 4:40:51 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →