SQLAlchemy 是 Python 编程语言中使用最广泛、最强大的 数据库操作工具库,它的作用是:
✅ 帮助你用 Python 更方便、高效、安全地操作数据库(如 MySQL、PostgreSQL、SQLite 等)。
假设你原本用原生 SQL 写查询:
SELECT * FROM users WHERE id = 1;
用 Python 和 SQLAlchemy,可以这样写:
user = session.query(User).filter_by(id=1).first()
你不需要拼接 SQL 字符串,SQLAlchemy 会自动把这段 Python 代码翻译成 SQL 语句并执行,结果是一个 User
对象。
SQLAlchemy 主要做什么?
功能 | 描述 |
---|---|
🧩 ORM(对象关系映射) | 将数据库的表和字段映射成 Python 的类和属性。 |
🧮 SQL 构建器 | 用 Python 构建 SQL 查询,而不是写原始 SQL 字符串。 |
🔄 数据库事务管理 | 提供统一的连接池、事务提交、回滚控制。 |
🛡️ 安全性 | 自动防止 SQL 注入。 |
🔌 多数据库支持 | 支持 MySQL、PostgreSQL、SQLite、Oracle、SQL Server 等。 |
SQLAlchemy 的两种使用方式:
模式 | 简介 | 适合谁 |
---|---|---|
Core 模式 | 写“类 SQL”的 Python 语法,偏向底层原理 | 精细控制 SQL 的开发者 |
ORM 模式 | 将表映射为类,更 OOP,使用简单 | 绝大多数 Python 项目推荐 |
ORM 示例
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base, sessionmaker
Base = declarative_base()
# 定义一个 User 表对应的类
class User(Base):
__tablename__ = ‘users’
id = Column(Integer, primary_key=True)
name = Column(String)
# 连接数据库
engine = create_engine(‘sqlite:///test.db’)
Base.metadata.create_all(engine)
# 操作数据
Session = sessionmaker(bind=engine)
session = Session()
# 添加新用户
new_user = User(name=’Alice’)
session.add(new_user)
session.commit()
# 查询
user = session.query(User).filter_by(name=’Alice’).first()
print(user.id, user.name)
✅ 使用 SQLAlchemy 的优势:
-
写法更清晰(面向对象)
-
自动防止 SQL 注入
-
支持数据库迁移(配合 Alembic 工具)
-
易于维护、扩展、调试
🚀 常见使用场景:
-
Web 框架(如 Flask、FastAPI、Django(部分))的数据操作层
-
数据分析任务中的数据库读写
-
数据清洗、定时任务等脚本中数据库连接