SQLAlchemy的SQL工具包和ORM是一套python数据库操作的综合工具包。它有多个不同领域的功能,可以单独使用或组合使用。其主要组件如下图所示,包含组件层次上的依赖关系。
如上图所示,SQLAlchemy 最重要的两个部分是 ORM 和 SQL 表达式语言。SQL表达式可以独立于ORM使用。使用 ORM 时,SQL 表达式语言仍然是公开 API 的一部分,因为它在对象关系配置和查询中使用。
文档分为三个部分: SQLAlchemy ORM、SQLAlchemy 核心和 方言(Dialects).
在 SQLAlchemy ORM中, 对象关系映射被充分引入和描述。新用户可以从对象关系教程开始。如果你想要了解自动构建高级SQL以及管理Python对象,推荐阅读此教程。
在 SQLAlchemy Core 中,主要介绍了SQLAlchemy 的 SQL、数据库集成和描述服务, 这部分的核心是 SQL 表达语言。SQL 表达式是独立于 ORM 包的一套自成一体的工具集, 它可以用来创建易于使用的 SQ 表达式,该 SQL 表达式可通过编程创建、修改和执行,返回游标结果集。对比 ORM 使用域为中心的方式,表达语言提供模式为中心的架构。新用户请从 SQL 表达式教程开始。SQLAlchemy 引擎,链接和池服务同样在SQLAlchemy Core中有描述。
Dialects介绍了所有 SQLAlchemy 支持的数据库和 DBAPI 后端。
主要关于ORM的工作代码示例包含在SQLAlchemy发行版中.所有包含的示例应用程序的描述在ORM Examples.中。
还有各种各样的示例涉及核心SQLAlchemy构造以及维基上的ORM, 参见Theatrum Chemicum。
SQLAlchemy已经针对以下平台进行了测试:
在0.9版本中更改: Python 2.6现在是支持的最小Python版本。
目前不支持的平台包括Jython,IronPython。曾经已经支持 Jython,并且可能会在将来的版本中支持,这取决于Jython本身的状态。
SQLAlchemy安装是通过基于setuptools的标准Python方法,通过直接引用setup.py
或通过使用pip或其他setuptools,兼容的方法。
在版本1.1中更改: setup.py文件现在需要setuptools;不再支持简单的distutils安装。
当pip
可用时,可以从Pypi下载并在一个步骤中安装该分发:
pip install SQLAlchemy
该命令将从Python Cheese Shop下载最新的发布的版SQLAlchemy并将其安装到您的系统中。
为了安装最新的prerelease版本,比如1.1.0b1
,pip要求使用--pre
标志:
pip install --pre SQLAlchemy
如上所述,如果最新版本是预发行版本,则将安装它而不是最新发布的版本。
SQLAlchemy包含C扩展,它提供了额外的速度提升来处理结果集。这些扩展在cPython的2.xx和3.xx系列上均受支持。
setup.py
will automatically build the extensions if an appropriate platform is detected. 如果C扩展的构建失败,由于缺少编译器或其他问题,安装过程将输出警告消息,并在完成报告最终状态时重新运行没有C扩展的构建。
要运行构建/安装而不尝试编译C扩展,可以指定DISABLE_SQLALCHEMY_CEXT
环境变量。对于这种情况的用例要么是针对特殊的测试环境,要么是通常的“重建”机制无法解决的罕见情况下的兼容性/构建问题:
export DISABLE_SQLALCHEMY_CEXT=1; python setup.py install
在版本1.1中更改:遗留的--without-cextensions标志已从安装程序中删除,因为它依赖于setuptools的不推荐使用的功能。
SQLAlchemy直接在Python 2或Python 3上运行,并且可以在任何环境中安装,无需任何调整或代码转换。
SQLAlchemy旨在与针对特定数据库构建的DBAPI实现一起运行,并包含对最流行数据库的支持。The individual database sections in Dialects enumerate the available DBAPIs for each database, including external links.
本文档涵盖了SQLAlchemy版本1.1。如果您正在使用已安装SQLAlchemy的系统,请从您的Python提示符中检查版本,如下所示:
>>> import sqlalchemy
>>> sqlalchemy.__version__ # doctest: +SKIP
1.1.0
Notes on what’s changed from 1.0 to 1.1 is available here at What’s New in SQLAlchemy 1.1?.