Sqlalchemy-Python数据库工具包

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

引言

SQLAlChemy是Python SQL工具包和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性。SQLAlChemy提供了一整套众所周知的企业级持久化模式,专为高效和高性能的数据库访问而设计,并改编成简单的Python域语言

SQLAlChemy的主要功能包括:

  • 工业实力ORM,从身份图、工作单元和数据映射器模式上的核心构建。这些模式允许使用声明性配置系统透明地持久化对象。域模型可以自然地构建和操作,并且更改会自动与当前事务同步
  • 面向关系的查询系统,根据对象模型显式公开SQL的全部功能,包括联接、子查询、关联和几乎所有其他功能。使用ORM编写查询使用的关系组合技术与编写SQL时使用的技术相同。虽然您可以随时使用文字SQL,但实际上从来不需要它
  • 一个全面而灵活的系统,可以立即加载相关集合和对象。集合缓存在会话中,并且可以在单个访问时使用联接一次加载,也可以通过跨整个结果集的每个集合查询一次加载
  • 核心SQL构建系统和DBAPI交互层。SQLAlChemy Core独立于ORM,本身就是一个完整的数据库抽象层,包括可扩展的基于Python的SQL表达式语言、模式元数据、连接池、类型强制和自定义类型
  • 所有主键和外键约束都假定是复合的和自然的。当然,代理整数主键仍然是规范,但是SQLAlChemy从不假定或硬编码此模型
  • 数据库自省和生成。数据库模式可以在一个步骤中“反映”到表示数据库元数据的Python结构中;然后,这些相同的结构可以立即生成CREATE语句-所有这些语句都在Core中,独立于ORM

SQLAlChemy的理念:

  • SQL数据库的行为越来越不像对象集合,大小和性能越重要;对象集合的行为越不像表和行,抽象就越重要。SQLAlChemy旨在同时满足这两个原则
  • ORM不需要隐藏“R”。关系数据库提供了丰富的、基于集合的功能,这些功能应该完全公开。SQLAlChemy的ORM提供了一组开放式模式,允许开发人员在域模型和关系模式之间构建自定义中介层,将所谓的“对象关系阻抗”问题变成遥远的记忆
  • 在所有情况下,开发人员都要做出关于对象模型和关系模式的设计、结构和命名约定的所有决策。SQLAlChemy仅提供自动执行这些决策的方法
  • 使用SQLAlChemy,不存在“ORM生成错误的查询”这样的事情-您保留对查询结构的完全控制,包括如何组织联接、如何使用子查询和关联、请求哪些列。SQLAlChemy所做的一切最终都是开发人员发起的决策的结果
  • 如果问题不需要ORM,请不要使用ORM。SQLAlChemy由一个核心和单独的ORM组件组成。Core提供了完整的SQL表达式语言,允许以Pythonic方式构造SQL构造,这些构造直接呈现为目标数据库的SQL字符串,返回本质上是增强型DBAPI游标的结果集
  • 交易应该是常态。使用SQLAlChemy的ORM,在调用Commit()之前,不会将任何内容放到永久存储中。SQLAlChemy鼓励应用程序创建描述一系列操作的开始和结束的一致方法
  • 千万不要在SQL语句中呈现文字值。最大程度地使用了绑定参数,从而允许查询优化器有效地缓存查询计划,并使SQL注入攻击不再成为问题

文档

最新文档位于:

https://www.sqlalchemy.org/docs/

安装/要求

有关安装的完整文档,请访问Installation

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

请参阅SQLAlchemy Community Guide

行为规范

最重要的是,SQLAlChemy非常重视用户和开发人员之间的礼貌、深思熟虑和建设性的交流。请参阅我们当前的行为准则,网址为Code of Conduct

许可证

SQLAlChemy分布在MIT license