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的支持
  • 增加了对postgresqlcase语句的支持
  • 添加了对不同类的联合的支持,只要列 是同一类型的
  • 将psycopg2要求更改为>;=2.5
  • 将测试运行程序更改为pytest
  • 修正了Storm在站点包中意外安装测试目录
  • 固定psycopg2>;=2.5支持使用abcmeta基类注入 例外情况
  • 删除了MySQL支持
  • 已删除pickle列类型(使用json或自行重新实现)
  • 删除了Python2.6和早期的支持
  • 删除模式管理
  • 删除了sqlobject支持
  • 删除了扭曲积分
  • 已删除wsgi调试时间线
  • 删除了Zope集成

原始说明

Storm是在 典范的API文档、手册和教程可从以下网址获得:

http://storm.canonical.com/

简介

这个项目开发了一年多,用于 典型的项目,如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

他们需要一段时间才能跑。所有测试都应该通过:失败意味着 您的环境有问题或暴风雨中有虫子。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java FirebaseInstanceId。getInstance()始终为空   linux Java执行文件错误   javaspringboot:如何使用Ajax在springboot和Thymeleaf中创建进度条?   java禁用在安卓上使用传单时启用setJavaScriptEnabled   java如何在主体中发布原始类型JSON数据?   消除JAVA While循环中的额外输出   如何在java中直接将基本数据类型分配给自定义类   java为什么addNode()方法返回编译错误“类型中的方法…不适用于参数…”,我该如何修复它?   java惰性合成可观察对象   eclipse Java Blackberry位图单击   java Android:AsyncTask对象[]无法在doInBackground中强制转换   java有没有办法重构或改进这段代码?   java如何使用系统以十六进制打印字节。出来普林顿?   多线程如何在我的java聊天室中调试“java.net.UnknownHostException”?   java如何从Google App Engine下载应用程序源文件   java如何在Spring Data Mongo的聚合$group中使用类似$dateToString   java IBM websphere application server未在MyEclipse8中启动。0