概述
SQLAlchemy SQL工具包和对象关系映射器是一套用于处理数据库和Python的综合工具。它有几个不同的功能领域,可以单独使用或组合在一起。其主要组件如下所示,组件依赖关系组织成层:
上面,SQLAlChemy的两个最重要的面向前端的部分是 对象关系映射器(ORM) 以及 Core 。
核心包含SQLAlChemy的SQL以及数据库集成和描述服务的广度,其中最突出的部分是 SQL表达式语言 。
SQL表达式语言是一个完全独立于ORM包的工具包,它提供了一个构造由可组合对象表示的SQL表达式的系统,然后可以针对特定事务范围内的目标数据库“执行”这些SQL表达式,并返回结果集。插入、更新和删除(即 DML )是通过传递表示这些语句的SQL表达式对象以及表示要与每个语句一起使用的参数的字典来实现的。
ORM构建在Core之上,以提供使用映射到数据库模式的域对象模型的方法。在使用ORM时,SQL语句的构造方式与使用Core时基本相同,但是DML的任务(这里指的是数据库中业务对象的持久性)是使用称为 unit of work ,它将针对可变对象的状态更改转换为INSERT、UPDATE和DELETE构造,然后根据这些对象调用这些构造。特定于ORM的自动化和以对象为中心的查询功能也增强了SELECT语句。
使用Core和SQL表达式语言提供了一个以模式为中心的数据库视图,以及一个面向不变性的编程范例,而ORM则在此基础上构建了一个以域为中心的数据库视图,具有更明显的面向对象和依赖于可变性的编程范例。由于关系数据库本身是可变服务,不同之处在于Core/SQL表达式语言是面向命令的,而ORM是面向状态的。
文档概述
文档分为四个部分:
SQLAlchemy 1.4/2.0教程 详细说明:这个全新的SQLAlChemy 1.4/2.0系列教程全面介绍了整个库,从对Core的描述开始,越来越多地介绍了ORM特定的概念。新用户以及来自 1.x style ,希望在 2.0 style 应该从这里开始。
SqLalChany ORM -在本节中,提供了ORM的参考文档;本节还包括现在遗留的 对象关系教程(1.x API) 。
SQLAlchemy Core -此处提供了Core内所有其他内容的参考文档;部分还包括传统 SQL表达式语言教程(1.x API) 。这里还介绍了SQLAlChemy引擎、连接和池服务。
代码示例
工作代码示例(主要是关于ORM)包含在SQLAlchemy分发版中。所有包含的示例应用程序的说明位于 ORM实例 .
还有很多示例涉及核心SQLAlChemy构造以及wiki上的ORM。看见 Theatrum Chemicum 。
安装指南
支持的平台
已针对以下平台测试了SQLAlchemy:
Cypthon 2.7
cPython 3.6及更高版本
PyPy 2.1或更高版本
在 1.4 版更改: 在python3系列中,3.6现在是python3支持的最低版本。
参见
Python3.6是Python3的最低版本;Python2.7仍然受支持
异步IO支持
SQLAlChemy的 asyncio
支持取决于 greenlet 项目。此依赖项将默认安装在常见的计算机平台上,但是并不是每个体系结构都支持此依赖项,也可能不会在不太常见的体系结构上默认安装此依赖项。请参阅部分 Asyncio平台安装说明 有关确保异步支持的其他详细信息,请参阅。
支持的安装方法
SQLAlChemy安装是通过标准Python方法进行的,这些方法基于 setuptools ,可以通过引用 setup.py
直接或通过使用 pip 或其他与setuptools兼容的方法。
在 1.1 版更改: setuptools现在是setup.py文件所必需的;不再支持纯distutils安装。
通过PIP安装
什么时候? pip
可以从pypi下载分发版并一步安装:
pip install SQLAlchemy
此命令将下载最新的 已发布 SQLAlChemy的版本,该版本来自 Python Cheese Shop 并将其安装到您的系统中。
为了安装最新的 预缓解 版本,例如 1.4.0b1
,pip要求 --pre
使用标志:
pip install --pre SQLAlchemy
在上面的位置,如果最新版本是预发布版本,则将安装它而不是最新发布版本。
使用setup.py安装
否则,您可以使用 setup.py
脚本::
python setup.py install
安装C延长件
SQLAlchemy包括C扩展,它为处理结果集提供了额外的速度提升。CPython的2.xx和3.xx系列都支持扩展。
setup.py
如果检测到适当的平台,将自动生成扩展。如果由于缺少编译器或其他问题导致C扩展的生成失败,安装过程将输出一条警告消息,并在完成时重新运行不带C扩展的生成,报告最终状态。
要在不编译C扩展的情况下运行生成/安装,请 DISABLE_SQLALCHEMY_CEXT
可以指定环境变量。这种方法的用例要么是针对特殊的测试环境,要么是对于通常的“重建”机制无法克服的兼容性/构建问题的罕见情况:
export DISABLE_SQLALCHEMY_CEXT=1; python setup.py install
在 1.1 版更改: 遗产 --without-cextensions
标志已从安装程序中删除,因为它依赖于不推荐使用的安装工具功能。
安装数据库API
SQLAlchemy的设计目的是使用 DBAPI 为特定数据库构建的实现,包括对最流行的数据库的支持。中的各个数据库部分 方言 为每个数据库枚举可用的DBAPI,包括外部链接。
检查已安装的SQLAlchemy版本
本文档涵盖SQLAlchemy 1.4版。如果您在一个已经安装了sqlacalchemy的系统上工作,请从python提示符检查版本,如下所示:
>>> import sqlalchemy >>> sqlalchemy.__version__ 1.4.0
1.3至1.4迁移
有关从1.3更改为1.4的说明,请访问 SQLAlchemy 1.4有什么新功能? .