SQLAlchemy:Python 数据库操作的工业级方案
SQLAlchemy:Python 数据库操作的工业级方案
SQLAlchemy 在 GitHub 上积累了超过 11,000 Star,是 Python 生态中历史最久、使用最广的数据库工具库之一。


SQLAlchemy 是一套完整的 Python SQL 工具集,同时提供 ORM 和底层 SQL 构建两大能力。开发者可以根据项目规模灵活选择使用方式。
ORM 功能
SQLAlchemy 的 ORM 基于身份映射、工作单元和数据映射器模式构建。开发者通过声明式配置定义数据模型,对象的增删改查会自动同步到当前事务中。
查询系统覆盖了 SQL 的全部能力,包括连接、子查询、关联查询等。ORM 查询使用关系组合的方式编写,与手写 SQL 的思路一致。需要时也可以直接嵌入原生 SQL。
关联数据的加载策略也很灵活。集合可以在首次访问时按需加载,也可以通过连接查询一次性加载,或者为每个集合单独发起查询。
Core 层
SQLAlchemy Core 独立于 ORM,是一套完整的数据库抽象层。它包含可扩展的 SQL 表达式语言、元数据管理、连接池、类型转换和自定义类型系统。
所有主键和外键约束都按复合键和自然键处理。虽然自增整数主键仍是常见做法,但 SQLAlchemy 不会对此做硬性假设。
数据库结构可以通过反射一次性转换为 Python 元数据结构,这些结构也能反向生成 CREATE 语句,全程不依赖 ORM。
设计理念
SQLAlchemy 的几个核心原则值得关注:
数据库在规模和性能要求变高时,行为越来越不像对象集合;对象集合在抽象层级提升时,行为也越来越不像表和行。SQLAlchemy 试图同时兼容这两种场景。
ORM 不必隐藏关系模型的能力。关系数据库提供了丰富的集合运算功能,应当被充分暴露。SQLAlchemy 的 ORM 提供开放的机制,让开发者在领域模型和关系模式之间构建自定义的映射层。
开发者始终掌控对象模型和数据库结构的设计决策,SQLAlchemy 只负责自动执行这些决策。
SQLAlchemy 由 Core 和独立的 ORM 组件构成。如果问题不需要 ORM,可以直接使用 Core 的 SQL 表达式语言,它能把 Python 结构渲染为目标数据库的 SQL 字符串,返回的结果集本质上是增强版的 DBAPI 游标。
事务应当是常态。使用 ORM 时,数据在调用 commit() 之前不会进入持久存储。绑定参数被最大程度使用,查询优化器可以有效缓存查询计划,SQL 注入也不是问题。
安装
通过 pip 安装:
pip install sqlalchemy
基础使用
定义模型:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
执行查询:
Session = sessionmaker(bind=engine)
session = Session()
user = session.query(User).filter_by(name='Alice').first()
SQLAlchemy 支持所有主流关系型数据库,包括 PostgreSQL、MySQL、SQLite、Oracle 和 SQL Server。文档完善,社区活跃,适合从小型脚本到大型 Web 应用的各种场景。
PostgreSQL、MySQL、SQLite、Oracle 和 SQL Server。文档完善,社区活跃,适合从小型脚本到大型 Web 应用的各种场景。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)