跳转到主要内容

Storm是Canonical开发的Python对象关系映射器(ORM)。这是由Andreas Runfalk维护的一个分支。

项目描述

这个分支是什么?

我在一个大型的私有项目中使用Storm,由于Storm我不得不停留在Python 2.7。这个分支通过添加对Python 3.3及更高版本的兼容性来解决这个问题。为此,我移除了我不使用的功能,并认为它们已经过时。从长远来看,我认为完全切换到SQLAlchemy是唯一正确的选择。但鉴于Storm的迁移更容易,我决定现在采用这种方法。

我将维护这个分支,直到我替换了Storm,这可能需要数年。

分支的原因是Storm已经近五年没有发布新版本了;最后的版本是0.20,发布于2013年6月28日。我在2018年5月4日分叉了当时的最新主干分支,该分支对0.20中的一些损坏功能进行了许多修复。当时的主干版本是#484

变更日志

由于这是未分叉版本的文件,因此不会更新CHANGELOG文件。我决定重新开始版本编号。

版本 0.2.0 (alpha)

发布于2019年3月8日

  • 使PropertyRegistry.add_class可选地作为装饰器工作
  • 重新添加了storm.versionstorm.version_info,以适应具有特定Storm版本要求的库和应用程序。版本指定为0.21.0(问题#1)。
  • 移除了对CaptureTracer的支持
  • 移除了对TimeoutTracer的支持
  • 重构测试套件以使用pytest。这解决了测试期间的大量警告。

版本 0.1.0(alpha)

发布于2018年10月8日

这次发布主要移除了功能。这次发布主要是测试它与其他应用程序配合得如何。这次发布在Storm 0.20之后。

  • 添加了Database.get_uri()方法
  • 添加了对ResultSet的支持,用作子查询
  • 添加了对Python 3.3的支持
  • 添加了对Python 3.4的支持
  • 添加了对Python 3.5的支持
  • 添加了对Python 3.6的支持
  • 添加了对Python 3.7的支持
  • 添加了对Postgresql CASE语句的支持
  • 添加了对不同类联接的支持,只要列的类型相同
  • 将psycopg2的要求更改为>=2.5
  • 将测试运行器更改为pytest
  • 修复了Storm意外将tests目录安装在site-packages中的问题
  • 修复了使用ABCMeta基类注入异常对psycopg2>=2.5支持的问题
  • 移除了对MySQL的支持
  • 移除了Pickle列类型(请使用JSON或自行实现)
  • 移除了对Python 2.6及更早版本的支持
  • 移除了模式管理
  • 移除了SQLObject支持
  • 移除了Twisted集成
  • 移除了WSGI调试时间线
  • 移除了Zope集成

原始描述

Storm是Canonical开发的一个用于Python的对象关系映射器。API文档、手册和教程可在以下网址找到:

http://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 = <An SQL expression>赋值,该表达式在INSERT/UPDATE时间执行。
  • Storm在对象添加到数据库之前就处理对象之间的关系。
  • Storm与现有的数据库模式表现良好。
  • Storm将在需要时自动将更改刷新到数据库中,以便查询影响最近修改的对象。

许可协议

版权所有(C) 2006-2009 Canonical, Ltd. 所有贡献必须将版权授予Canonical。

此库是免费软件;您可以在GNU Lesser General Public License的条款下重新分发和/或修改,该许可证由Free Software Foundation发布;许可证的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 Version 2.1许可证的完整文本位于/usr/share/common-licenses/LGPL-2.1。

开发Storm

简短版本:如果您正在运行ubuntu,或者可能是debian,以下内容应该可以工作。如果不可以,以下为详细版本。

dev/ubuntu-deps
make develop
dev/db-setup
make check

详细版本

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

安装依赖项

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

sudo apt-get install \
    python-mysqldb mysql-server \
    postgresql pgbouncer \
    build-essential

下载可能需要几分钟(总共大约200MB)。下载完成后,将显示一个名为“配置mysql-server-5.0”的屏幕。当被要求输入root用户的密码时,留空并按回车键继续。这不是生产服务器的推荐设置,但在开发机器上可以简化操作。您可能需要多次输入密码。每次都留空。

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

apt-get install \
    python-fixtures python-psycopg2 \
    python-testresources python-transaction python-twisted \
    python-zope.component python-zope.security

有一个模块——pgbouncer——在Ubuntu中尚未打包。可以从PyPI安装:[http://pypi.python.org/pypi/pgbouncer](http://pypi.python.org/pypi/pgbouncer)

或者,可以使用以下命令将依赖项作为eggs下载到当前目录:make develop

这确保了所有依赖项都可用,并从PyPI中下载(根据需要)。

设置数据库用户和访问安全性

PostgreSQL需要设置为允许来自localhost的TCP/IP连接。编辑/etc/postgresql/8.3/main/pg_hba.conf并确保以下行存在

host all all 127.0.0.1/32 trust

这可能在PostgreSQL 8.4中将'md5'更改为'trust'。

为了运行两阶段提交测试,您还需要将postgres.conf中的max_prepared_transactions值更改为类似

max_prepared_transactions = 200

现在保存并关闭,然后重新启动服务器

sudo systemctl restart postgresql

现在让我们创建我们的PostgreSQL用户。如Ubuntu PostgreSQL文档中所述,最简单的方法是创建一个与您的用户名相同的用户。运行以下命令为您创建用户(如果提示输入密码,请留空)

sudo -u postgres createuser --superuser $USER

创建测试数据库

测试套件需要一些本地数据库来测试PostgreSQL功能

createdb storm_test

运行测试

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

make check

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

项目详情


下载文件

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

源分发

storm-legacy-0.2.0.tar.gz (206.8 kB 查看哈希值)

上传时间

由以下机构支持