Storm (software)

Last updated
Storm
Developer(s) Canonical Ltd.
Stable release
0.25 / April 18, 2021;2 years ago (2021-04-18)
Written in Python
Operating system Cross-platform
Type Object-relational mapping
License LGPL 2.1
Website storm.canonical.com OOjs UI icon edit-ltr-progressive.svg

Storm is a Python programming library for object-relational mapping between one or more SQL databases and Python objects. It allows Python developers to formulate complex queries spanning multiple database tables to support dynamic storage and retrieval of object information.

Contents

MySQL, PostgreSQL and SQLite database support is built into Storm, and the API allows for support for others. Storm also supports the Django and Zope web frameworks natively. Twisted support is planned for the .20 release. [1]

Development

Storm was developed at Canonical Ltd. in Python for use in the Launchpad and Landscape applications and subsequently released in 2007 as free software. The project is free software and released under the GNU Lesser General Public License and contributors are required to assign copyrights to Canonical. Version control is done in bazaar and issue tracking in Launchpad. [2]

VersionRelease DateImprovements [3]
Storm 0.21TBDIn development as of 2013
Storm 0.2028 Jun 2013
  • A new CaptureTracer has been added to storm.testing.
  • Setuptools is now required to run setup.py. This makes it easier to install dependencies required to run the test suite.
  • PostgreSQL disconnection errors are now more reliably detected.
  • Insert expressions now support multi-row and subquery INSERT statements.
  • Support in the postgres backend to use the RETURNING extension for UPDATE, optionally specifying columns to return.
  • Add a Distinct expression for pre-pending 'DISTINCT' to SQL expressions.
  • Switch to REPEATABLE READ as isolation level for Postgres.
  • Add support for two-phase commits (PostgreSQL only).
  • ZStormResourceManager now has a schema_stamp_dir optional instance attribute, so schema upgrades will be performed only when needed.
Storm 0.1905 Oct 2011
  • The storm.zope.testing.ZStormResourceManager supports using a custom URI.
  • ResultSet.config's "distinct" argument accepts a tuple of columns.
  • Provide wrapped cursor objects in Django integration layer.
  • Add a new JSON property, new ROW constructor, new Cast expressions, and two new tracers.
  • New storm.twisted.transact module added.
Storm 0.1825 Oct 2010
  • Include code to manage and migrate database schemas.
  • Added a storm.zope.testing.ZStormResourceManager class to manage a set of stores registered.
  • When a TimeoutError is raised it includes a description about why the exception was raised.
  • Improved the IResultSet interface to document the rationale of why some attributes are not included.
Storm 0.1705 Aug 2010
  • ResultSet and ReferenceSet are reworked and improved.
  • The Store and Connection classes have block_access() and unblock_access() methods.
  • ZStormError will be raised on attempts to use a per-thread store from the wrong thread.
Storm 0.1629 Nov 2009
  • The set expression constructor will now flatten its first argument if it is of the same type.
  • Add startswith(), endswith() and contains_string() methods to Comparable.
  • C extensions are enabled by default.
  • 'make doc' uses Pydoctor to generate API documentation.
Storm 0.1508 Aug 2009
  • Add support for latest version on Django by not checking arguments passed to _cursor.
  • New GenerationalCache, UUID property type, Neg expression, and Coalese expressions were added.
  • Improved DisconnectionError reporting.
  • Results/ResultSets now expose more.
Storm 0.1409 Jan 2009
  • A new storm.django package has been added.
  • The Store constructor takes an optional cache keyword argument,
  • ResultSets now offer an is_empty() method.
Storm 0.1328 Aug 2008
  • Add group_by/having methods on ResultSet objects.
  • Change tests/store to keep the connection during the tests.
  • Implemented support for plugging generic "tracers".
  • Properties now accept a "validator" parameter.
  • Expressions can be passed to Store.find() as well as classes.
  • Objects are flushed in the order they become dirty.
  • ClassAlias caches all explicitly named aliases.
  • Result sets and reference sets now have a __contains__() method.
Storm 0.1228 Jan 2008
  • The Connection will reconnect automatically when drops are detected.
  • Store.flush() will not load values inserted in the database
  • Support in the postgres backend to use the RETURNING extension.
  • Introduced a cache mechanism that keeps the N last retrieved objects in memory.
  • Improved support for TimeDelta properties on all backends.
Storm 0.1108 Oct 2007Minor bug fixing release.
Storm 0.1008 Aug 2007Bug fixes, feature enhancements, documentation!
Storm 0.906 Jul 2007

See also

Related Research Articles

<span class="mw-page-title-main">PostgreSQL</span> Free and open-source relational database management system

PostgreSQL, also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. It was originally named POSTGRES, referring to its origins as a successor to the Ingres database developed at the University of California, Berkeley. In 1996, the project was renamed to PostgreSQL to reflect its support for SQL. After a review in 2007, the development team decided to keep the name PostgreSQL and the alias Postgres.

Zope is a family of free and open-source web application servers written in Python, and their associated online community. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web. Zope has been called a Python killer app, an application that helped put Python in the spotlight.

<span class="mw-page-title-main">PyQt</span> Python GUI library

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various kinds of UNIX, including Linux and MacOS.

<span class="mw-page-title-main">Canonical (company)</span> UK-based software company that maintains the Ubuntu OS

Canonical Ltd. is a UK-based privately held computer software company founded and funded by South African entrepreneur Mark Shuttleworth to market commercial support and related services for Ubuntu and related projects. Canonical employs staff in more than 30 countries and maintains offices in London, Austin, Boston, Shanghai, Beijing, Taipei, Tokyo and the Isle of Man.

<span class="mw-page-title-main">Kexi</span>

Kexi is a visual database applications creator tool by KDE, designed to fill the gap between spreadsheets and database solutions requiring more sophisticated development. Kexi can be used for designing and implementing databases, data inserting and processing, and performing queries. It is developed within the Calligra project but is released separately.

<span class="mw-page-title-main">Lazarus (software)</span> Free cross-platform integrated development environment for Free Pascal

Lazarus is a free, cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for programmers developing with the Object Pascal language, which is as close as possible to Delphi.

CherryPy is an object-oriented web application framework using the Python programming language. It is designed for rapid development of web applications by wrapping the HTTP protocol but stays at a low level and does not offer much more than what is defined in RFC 7231.

<span class="mw-page-title-main">LAMP (software bundle)</span> Acronym for a common web hosting solution

LAMP is an acronym denoting one of the most common software stacks for many of the web's most popular applications. However, LAMP now refers to a generic software stack model and its components are largely interchangeable.

A source-code-hosting facility is a file archive and web hosting facility for source code of software, documentation, web pages, and other works, accessible either publicly or privately. They are often used by open-source software projects and other multi-developer projects to maintain revision and version history, or version control. Many repositories provide a bug tracking system, and offer release management, mailing lists, and wiki-based project documentation. Software authors generally retain their copyright when software is posted to a code hosting facilities.

<span class="mw-page-title-main">Catalyst (software)</span>

Catalyst is an open source web application framework written in Perl, that closely follows the model–view–controller (MVC) architecture, and supports a number of experimental web patterns. It is written using Moose, a modern object system for Perl. Its design is heavily inspired by frameworks such as Ruby on Rails, Maypole, and Spring.

<span class="mw-page-title-main">Launchpad (website)</span>

Launchpad is a web application and website that allows users to develop and maintain software, particularly open-source software. It is developed and maintained by Canonical Ltd.

<span class="mw-page-title-main">Compiz</span> Compositing window manager for the X Window System

Compiz is a compositing window manager for the X Window System, using 3D graphics hardware to create fast compositing desktop effects for window management. Effects, such as a minimization animation or a cube workspace, are implemented as loadable plugins. Because it conforms to the ICCCM conventions, Compiz can be used as a substitute for the default Mutter or Metacity, when using GNOME Panel, or KWin in KDE Plasma Workspaces. Internally Compiz uses the OpenGL library as the interface to the graphics hardware.

<span class="mw-page-title-main">GNU Bazaar</span>

GNU Bazaar is a distributed and client–server revision control system sponsored by Canonical.

The following tables list notable software packages that are nominal IDEs; standalone tools such as source code editors and GUI builders are not included. These IDEs are listed in alphabetic order of the supported language.

ADempiere is an Enterprise Resource Planning or ERP software package released under a free software license. The verb adempiere in Italian means "to fulfill a duty" or "to accomplish".

Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications—as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">Drizzle (database server)</span>

Drizzle is a discontinued free software/open-source relational database management system (DBMS) that was forked from the now-defunct 6.0 development branch of the MySQL DBMS.

<span class="mw-page-title-main">Ubuntu One</span> Cloud service operated by Canonical Ltd.

Ubuntu One is an OpenID-based single sign-on service operated by Canonical Ltd. to allow users to log onto many Canonical-owned Web sites. Until April 2014, Ubuntu One was also a file hosting service and music store that allowed users to store data "in the cloud".

Mir is a computer display server and, recently, a Wayland compositor for the Linux operating system that is under development by Canonical Ltd. It was planned to replace the currently used X Window System for Ubuntu; however, the plan changed and Mutter was adopted as part of GNOME Shell.

References

  1. Storm codebase in bzr. http://bazaar.launchpad.net/~storm/storm/trunk/files/head:/storm/ Retrieved on 24 May 2012
  2. Canonical's contributor agreement http://www.canonical.com/contributors Retrieved 24 May 2012
  3. Storm Developers. "Launch Pad". https://launchpad.net/storm 2006-07-17. Retrieved on 24 May 2012