ORM技术 - SQLAIchemy 库详解

📅 发布时间:2026/7/12 22:27:02 👁️ 浏览次数:
ORM技术 - SQLAIchemy 库详解
ORM 是Object-Relational Mapping对象关系映射的缩写。简单来说它是一种编程技术用于在面向对象编程语言如 Python、Java、C#中的对象与关系型数据库如 MySQL、PostgreSQL、SQLite中的表之间建立自动映射关系。1. 核心概念它解决了什么问题在没有 ORM 之前程序员需要手动编写 SQL 语句来操作数据库并将查询结果手动转换为代码中的对象。这导致了“阻抗失配”Impedance Mismatch问题代码世界使用类Class、对象Object、属性Attribute、列表List。数据库世界使用表Table、行Row、列Column、结果集Result Set。ORM 的作用就是充当“翻译官”你操作Python 对象ORM 自动帮你生成并执行对应的SQL 语句。数据库返回结果集ORM 自动帮你将其转换为Python 对象。2. 直观对比有 ORM vs 无 ORM假设我们要从数据库中查找一个用户名为 Alice 的用户。❌ 不使用 ORM (原生 SQL)你需要手动处理连接、SQL 字符串拼接、执行、获取结果、类型转换。import sqlite3 # 1. 连接数据库 conn sqlite3.connect(example.db) cursor conn.cursor() # 创建游标 # 2. 编写 SQL 字符串 (容易出错且不同数据库语法可能不同) sql SELECT id, username, email FROM users WHERE username ? cursor.execute(sql, (Alice,)) # 3. 获取结果 (得到的是元组不是对象) row cursor.fetchone() if row: # 4. 手动转换为对象 (繁琐) user_id row[0] username row[1] email row[2] print(f找到用户: {username}, 邮箱: {email}) conn.close()使用 ORM以SQLAIchemy 为列你只需要操作python类和对象。# 1. 定义模型 (映射关系已配置好) # class User(Base): ... # 2. 直接像操作普通对象一样查询 # SQLAlchemy 自动将其翻译为: SELECT * FROM users WHERE username Alice user db.query(User).filter_by(usernameAlice).first() if user: # 3. 直接访问属性无需关心底层是元组还是字典 print(f找到用户: {user.username}, 邮箱: {user.email}) # 4. 修改属性并保存 user.email new_emailexample.com db.commit() # 自动翻译为 UPDATE users SET email ...后续我会分享我在使用SLQALchemy 过程中遇到的各种问题及解决方法加深我对ORM技术的理解。