Storm是Canonical为Python开发的对象关系映射器(ORM)。这是安德烈亚斯·伦福尔克保养的叉子
storm-legac的Python项目详细描述
这是什么叉子?
我在一个大型私人项目中使用了Storm,由于Storm 被python 2.7困住了。这个分叉通过添加 支持Python3.3及更高版本。为此我删除了 我自己不使用的功能,感觉已经过时了。在 从长远来看,我认为完全转向 sqlalchemy是唯一正确的 选择。但是因为风暴港比较容易,我决定去 现在就采用这种方法。
我会一直保持这个叉子直到我换掉风暴 多年内不会发生。
分岔的原因是风暴没有在 差不多五年了;最后一次发布是0.20 2013-06-28。我分叉 目前的主干在2018-05-04,其中有不少修复 在0.20中被破坏的东西。当时的后备箱改型 是否484
更改日志
不会更新changelog
文件,因为它来自未格式化的
版本。我决定重新开始版本编号。
版本0.2.0(alpha)
2019年火星8号发布
- 使
propertyRegistry.add_class
可以选择作为装饰器工作 - 为库和
具有特定Storm版本要求的应用程序。版本
指定为
0.21.0
(问题 1)。 - 删除了CaptureTracer
- 已删除
TimeoutTracer
支持 - 重构测试套件以使用pytest。这解决了很多问题 测试期间的警告。
版本0.1.0(alpha)
于2018年10月8日发布
此版本主要删除功能。这次发布主要是一次测试 它在其他应用程序中的工作情况。这个版本来了 风暴过后0.20。
- 添加了
database.get_uri()
方法 - 添加了将用作子查询的
resultset
支持 - 增加了对Python3.3的支持
- 增加了对Python3.4的支持
- 增加了对Python3.5的支持
- 增加了对Python3.6的支持
- 增加了对Python3.7的支持
- 增加了对postgresql
case
语句的支持 - 添加了对不同类的联合的支持,只要列 是同一类型的
- 将psycopg2要求更改为
>;=2.5
- 将测试运行程序更改为pytest
- 修正了Storm在
站点包中意外安装
测试
目录 - 固定
psycopg2>;=2.5
支持使用abcmeta基类注入 例外情况 - 删除了MySQL支持
- 已删除pickle列类型(使用json或自行重新实现)
- 删除了Python2.6和早期的支持
- 删除模式管理
- 删除了sqlobject支持
- 删除了扭曲积分
- 已删除wsgi调试时间线
- 删除了Zope集成
原始说明
Storm是在 典范的API文档、手册和教程可从以下网址获得:
简介
这个项目开发了一年多,用于 典型的项目,如launchpad和landscape before being 2007年7月9日作为免费软件发布。
设计:
- 干净轻量级的api提供了一个短的学习曲线,并且 长期可维护性。
- Storm是以测试驱动的方式开发的。未经测试的 代码被认为是一个错误。
- Storm不需要特殊的类构造函数,也不需要命令基 上课。
- 风暴是精心设计的(不同的等级有非常清楚的 边界,小而干净的酒吧集成电路API)。
- 从第一天开始就设计好了,可以同时使用瘦关系 数据库,如sqlite和大型钢铁系统,如postgresql 和MySQL。
- Storm很容易调试,因为它的代码是用kiss编写的 原则,因此很容易理解。
- 从第一天开始就设计为在低端同时工作 小型数据库和高端应用程序访问 十亿行表并提交到多个数据库后端。
- 很容易编写和支持Storm(当前 后端大约有100行代码)。
功能:
- 暴风雨很快。
- Storm允许您通过 允许您构造跨越多个 使用python的表。
- Storm允许您在需要时(或者如果您只是 更喜欢),允许您混合使用"旧式"代码和ORM代码
- Storm句柄轻松组合主键(无需 代理密钥)。
- Storm不做模式管理,因此你是自由的 根据需要管理模式,并创建有效的类 风暴是干净而简单的。
- Storm可以很好地连接到多个数据库并使用 所有的python类型相同(或不同)。
- 当 这是真正需要的(表达式在insert/update时执行 时间)
- Storm处理对象之间的关系 添加到数据库。
- Storm可以很好地处理现有的数据库模式。
- 当 需要,以便查询影响最近修改的对象。
许可证
版权所有(c)2006-2009 Canonical,Ltd.所有稿件必须 版权归Canonical所有。
这个库是免费软件;您可以重新分发它和/或 根据GNU小公众条款修改 自由软件基金会发布的许可证;或者 许可证的2.1版,或(由您选择)任何更高版本。
这个图书馆的发行是希望它能有用, 但没有任何保证;甚至没有 适销性为特定目的的适销性或适合性看GNU 有关详细信息,请参阅次要的通用公共许可证。
你应该收到一份GNU的副本 与此库一起使用许可证;如果没有,请写入免费软件 马萨诸塞州波士顿富兰克林街51号5楼基金会公司 02110-1301美国
在ubuntu系统上,gnu小将的完整文本 公共版本2.1许可证位于/usr/share/common licenses/lgpl-2.1中
发展风暴
短版本:如果您运行的是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"。当被要求 根用户的密码将该字段留空,然后按回车键 继续。对于产品,这不是建议的设置 服务器,但使开发机器上的生活更轻松。你可能是 多次要求输入密码。每一个都留空 病例:
runni的python依赖项ng测试主要可以安装在 APT GET:
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" rel="nofollow">http://pypi.python.org/pypi/pgbouncer
或者,可以将依赖项作为鸡蛋下载到当前
目录中有:make develop
这样可以确保所有依赖项都可用,从 适当的PYPI。
设置数据库用户和访问安全性
需要设置PostgreSQL以允许来自
本地主机。编辑/etc/postgresql/8.3/main/pg_hba.conf
确保存在以下行:
host all all 127.0.0.1/32 trust
这可能(对于postgressql 8.4)需要将"md5"更改为 "信任"。
为了运行两阶段提交测试,您还需要 将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
运行测试
最后,是时候进行测试了!进入的基本目录 要测试并运行的风暴分支:
make check
他们需要一段时间才能跑。所有测试都应该通过:失败意味着 您的环境有问题或暴风雨中有虫子。