跳转到主要内容

数据库抽象库

项目描述

PyPI PyPI - Python Version PyPI - Downloads

Python SQL工具包和对象关系映射器

简介

SQLAlchemy是一个Python SQL工具包和对象关系映射器,它为应用开发者提供了SQL的全部功能和灵活性。SQLAlchemy提供了一套全面的知名企业级持久化模式,这些模式设计用于高效的、高性能的数据库访问,并适配为一个简单、Pythonic的领域语言。

SQLAlchemy的主要功能包括

  • 一个工业级的ORM,基于核心的标识图、工作单元和数据映射模式构建。这些模式允许使用声明性配置系统透明地持久化对象。领域模型可以自然构建和操作,并且更改会自动与当前事务同步。

  • 一个面向关系的查询系统,明确地暴露了SQL的全面功能,包括连接、子查询、关联和几乎所有其他功能,以对象模型的形式。使用ORM编写查询时,使用的与编写SQL时使用的相同关系组合技术。虽然您可以在任何时候切换到SQL,但实际上几乎不需要这样做。

  • 一个全面的灵活系统,用于预加载相关集合和对象。集合在会话中缓存,可以单独访问加载,一次性使用连接加载,或者通过查询每个集合在完整结果集中加载。

  • 一个核心SQL构造系统和DBAPI交互层。SQLAlchemy核心与ORM分开,并且本身就是一个完整的数据库抽象层,包括可扩展的基于Python的SQL表达式语言、模式元数据、连接池、类型强制和自定义类型。

  • 所有主键和外键约束都假定是复合和自然的。代理整数主键当然是规范,但SQLAlchemy从不假设或硬编码到此模型。

  • 数据库自省和生成。数据库模式可以一步“反射”到表示数据库元数据的Python结构;这些相同的结构可以生成CREATE语句返回 - 所有这些都在核心中,独立于ORM。

SQLAlchemy的哲学

  • 随着规模和性能开始变得重要,SQL数据库越来越不像对象集合;对象集合随着抽象的重要性而越来越不像表和行。SQLAlchemy旨在同时满足这两个原则。

  • ORM不需要隐藏“R”。关系数据库提供了丰富的基于集合的功能,应该完全暴露。SQLAlchemy的ORM提供了一套开放式模式,允许开发者在域模型和关系模式之间构建自定义中介层,将所谓的“对象关系阻抗”问题转变为遥远的记忆。

  • 在所有情况下,开发者都做出有关对象模型以及关系模式的设计、结构和命名约定的所有决定。SQLAlchemy只提供自动化这些决定的手段。

  • 使用SQLAlchemy,不存在“ORM生成了糟糕的查询”这种情况 - 您可以完全控制查询的结构,包括连接的组织方式、子查询和关联的使用、请求的列。SQLAlchemy所做的一切最终都是开发者发起的决定的结果。

  • 如果问题不需要ORM,则不要使用ORM。SQLAlchemy由核心和单独的ORM组件组成。核心提供了一种完整的SQL表达式语言,允许以Pythonic方式构建直接渲染到SQL字符串的SQL结构,并返回基本增强的DBAPI游标的结果集。

  • 事务应该是规范。使用SQLAlchemy的ORM,在调用commit()之前,没有任何内容存储到永久存储中。SQLAlchemy鼓励应用程序创建一种一致的方法来界定一系列操作的开始和结束。

  • 永远不要在SQL语句中渲染文字值。尽可能使用绑定参数,允许查询优化器有效地缓存查询计划,使SQL注入攻击成为不可能。

文档

最新文档在

https://sqlalchemy.org.cn/docs/

安装/需求

完整的安装文档在 安装

获取帮助/开发/错误报告

请参阅SQLAlchemy社区指南

行为准则

首先,SQLAlchemy非常重视用户和开发者之间礼貌、周到和建设性的沟通。请参阅我们的当前行为准则行为准则

许可协议

SQLAlchemy遵循MIT许可证分发。

由以下支持