跳转到主要内容

Storm是Canonical开发的Python对象关系映射(ORM)。

项目描述

Storm 是 Canonical 开发的 Python 对象关系映射器。API 文档、手册和教程可以从以下链接获取:

https://storm.canonical.com/

简介

该项目在发布为免费软件之前,经过了一年多的开发,用于 Canonical 的项目,如 Launchpad 和 Landscape。

设计

  • 干净且轻量级的 API 提供了短的学习曲线和长期的可维护性。

  • Storm 以测试驱动的方式进行开发。未测试的代码行被视为错误。

  • Storm 不需要特殊的类构造函数,也没有命令式基类。

  • Storm 设计得很好(不同的类有非常清晰的边界,具有小型且干净的公共 API)。

  • 从第一天开始设计,既可以与薄关系型数据库(如 SQLite)一起工作,也可以与大型系统(如 PostgreSQL 和 MySQL)一起工作。

  • 由于代码遵循 KISS 原则,因此 Storm 容易调试,也容易理解。

  • 从第一天开始设计,既可以用于低端(具有简单的小型数据库),也可以用于高端(应用程序访问数十亿行的表,并向多个数据库后端提交)。

  • 编写和支持 Storm 后端非常容易(当前后端代码大约有 100 行)。

特性

  • Storm 很快。

  • Storm 允许您通过使用 Python 构建跨越多个表的复杂查询来有效地访问和更新大型数据集。

  • Storm 允许您在需要时回退到 SQL(或者如果您更喜欢),允许您混合“老式”代码和 ORM 代码

  • Storm 容易处理复合主键(不需要代理键)。

  • Storm 不进行模式管理,因此您可以自由地按照所需管理模式,创建与 Storm 一起工作的类既干净又简单。

  • Storm 在连接到多个数据库时表现良好,并使用相同的 Python 类型(或不同的类型)与所有数据库一起工作。

  • Storm 可以处理 obj.attr = <A SQL expression> 赋值,当真正需要时(表达式在 INSERT/UPDATE 时间内执行)。

  • Storm 在对象添加到数据库之前就处理了对象之间的关系。

  • Storm 与现有的数据库模式配合良好。

  • Storm 在需要时自动将更改刷新到数据库,以确保查询影响的最近修改的对象。

许可证

版权 (C) 2006-2020 Canonical, Ltd. 所有贡献必须将版权分配给 Canonical。

此库是自由软件;您可以在自由软件基金会发布的 GNU 较小于公共许可证条款下重新分发和/或修改它;许可证版本 2.1 或(根据您的选择)任何较新版本。

本库的发布是为了希望它是有用的,但没有任何保证;甚至没有关于商销性或针对特定目的适合性的隐含保证。有关详细信息,请参阅GNU Lesser General Public License。

你应该已经随本库收到了GNU Lesser General Public License的一个副本;如果没有,请写信给Free Software Foundation, Inc.,地址:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA。

在Ubuntu系统上,GNU Lesser General Public License版本2.1的完整文本位于/usr/share/common-licenses/LGPL-2.1。

开发Storm

简短版:如果您正在运行Ubuntu,或者可能是Debian,以下操作应该可行。如果不行,以下为详细版。

$ dev/ubuntu-deps $ echo “$PWD/** rwk,” | sudo tee /etc/apparmor.d/local/usr.sbin.mysqld >/dev/null $ sudo aa-enforce /usr/sbin/mysqld $ make develop $ make check

详细版

以下说明描述了设置开发环境和运行测试套件的步骤。

安装依赖项

以下说明假设您正在使用Ubuntu。在Debian系统上,此过程可能无需更改即可工作,在非Debian基于的Linux发行版上可能只需要最小更改。为了运行测试套件并测试所有支持的数据库后端,您需要安装MySQL和PostgreSQL,以及相关的Python数据库驱动程序。

$ sudo apt-get install

mysql-server postgresql pgbouncer build-essential

这些需要几分钟才能下载。

运行测试的Python依赖项可以使用apt-get安装

$ apt-get install

python3-fixtures python3-pgbouncer python3-psycopg2 python3-testresources python3-timeline python3-transaction python3-twisted python3-zope.component python3-zope.security

或者,可以使用以下命令将依赖项下载为当前目录下的egg文件

$ make develop

这确保所有依赖项都可用,并从PyPI下载适当的依赖项。

数据库设置

大多数数据库设置都由测试套件自动完成。但是,Ubuntu默认的MySQL打包版包含一个AppArmor配置文件,该文件阻止它写入本地数据目录。为了允许测试套件这样做,您需要授予它访问权限,最简单的方法是将类似以下行添加到/etc/apparmor.d/local/usr.sbin.mysqld

/path/to/storm/** rwk,

然后重新加载配置文件

$ sudo aa-enforce /usr/sbin/mysqld

运行测试

最后,是时候运行测试了!进入您要测试的storm分支的基本目录,并运行

$ make check

它们需要一段时间才能运行。所有测试都应该通过:失败意味着您的环境存在问题或Storm中存在错误。

项目详情


下载文件

下载适用于您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

storm-1.0.tar.gz (285.1 kB 查看散列值)

上传于 源码

支持