News and Updates
SQLAlchemy Migrated to Git
The SQLAlchemy source repository has been migrated to Git.
Rationale for the migration includes the following:
- Git manages the size of the repository more efficiently; while the Mercurial repository has been approaching 50M in size, the Git repository is only 17M.
- Git allows for lightweight, temporary feature branches which can be freely renamed or deleted, including that dead branches can be pruned of their changesets. The Mercurial repository had filled up with several dozen development branches, some abandoned, which while they could be hidden via "close", could never be removed. While Mercurial supports part of Git's functionality via the "bookmarks" extension, users typically are unaware of this and continue to create unwieldy branches. Bookmarks don't solve the issue of removing unused changesets in any case. Feature branches in Mercurial typically had to proceed in separate clones to allow for the possibility of abandonment without clogging up the main repository.
- While Mercurial has various extensions which emulate advanced Git features like "rebase" and "collapse", manipulation of history for the purposes of collapsing changesets or manipulating branches is a first class and widely used feature in Git.
- Largely due to the popularity of Github, Git has achieved a much higher userbase, to the degree where we regularly have users requesting us to move to Git so they can provide pull requests (as they don't want to learn Mercurial).
SQLAlchemy's issue repository will remain hosted on Trac; while a Git repository can be mirrored in any number of places, an issue repository cannot (for now! Can someone please create a distributed issue tracker? Should be pretty doable, though getting Github/Bitbucket to use it, not so much...), so SQLAlchemy's long history of issue discussion remains maintained directly by the project.
While we are favoring Bitbucket as the location of the "primary" push repository, users who wish to contribute should feel free to provide pull requests from either Bitbucket or Github; we should be able to accommodate both.
The SQLAlchemy Mercurial repository at http://hg.sqlalchemy.org/ will remain up for some period of time until we observe that requests have fallen off - note that this repository is not being mirrored from Git, as the repository would need to be recreated with bookmarks instead of branches which require recreating the entire revision history.
SQLAlchemy 0.8.1 Released
SQLAlchemy release 0.8.1 is now available.
This is a bugfix release which resolves many issues, some of which appeared in 0.8.0 as regressions and many more that affect all versions.
Major issues resolved include a significant rework to the Query.join() method, as well as a major fix to an issue regarding overlapping column labels affecting primarily the ORM. In total, there are 27 bug fixes listed in the Changelog. We'd like to thank the many contributors who helped with this release.
SQLAlchemy 0.8.1 is available on the Download Page.
SQLAlchemy 0.8.0 Released
SQLAlchemy release 0.8.0 final is now available.
This release now sets 0.8 as the official production series of SQLAlchemy, following two beta releases.
Version 0.8 marks the most consistent, extensible and performant version of SQLAlchemy to date. The development cycle for 0.8 has been particularly long, starting in April of 2012 with a rewrite of the internals of the relationship() construct, followed by the addition of a significant amount of new functionality regarding "polymorphic" querying, and later into a major upgrade to the typing system, including an extensible operator system and type-specific SQL expression support.
Some major new features include:
- New Relationship Features
- New Polymorphic Features - with_polymorphic() and of_type()
- New Runtime Inspection System
- Extensible Operator System
- HSTORE Support
In addition, a new API for external dialects, along with an associated test suite, allows third-party dialects to be organized and tested in a consistent manner. Several new or updated SQLAlchemy dialects make use of this system, most notably an all new version of IBM DB2 for SQLAlchemy as well as sqlalchemy-akiban.
Beyond the major new additions, SQLAlchemy internals and tests continue to be improved and simplified. Long functions and classes have been broken out into compositions of small functions, which are easier to understand as well as to unit test; tests themselves are being moved from long lists of assertions within a single test into small units each containing a single assertion, with an emphasis on testing smaller units of functionality more exhaustively. The test suite has now surpassed 5000 individual tests, which are run via continuous integration against a variety of Python platforms and DBAPI implementations using on-demand Amazon EC2 instances. Coverage is also high: sqlalchemy.orm is at 95%, sqlalchemy.sql is at 94%, sqlalchemy.ext.declarative is at 99%.
For a full overview of major features and behavioral changes in SQLAlchemy, refer to the What's New? document. For a detailed list of changes in 0.8 and throughout the 0.8 series, refer to the Changelog.
SQLAlchemy 0.8.0 is available for download on the Download Page.
SQLAlchemy 0.7.10 Released
SQLAlchemy 0.7.10 is now available.
This is a bugfix release, sending out a series of fixes that have accumulated as version 0.8.0's release is imminent.
Fixes in this version include issues related to the Oracle, SQL Server, MySQL, and Google App Engine dialects, as well as a few schema related and ORM related fixes.
Full changelog is available at 0.7.10 Changelog.
Download SQLAlchemy 0.7.10 on the download page.
SQLAlchemy 0.8.0b2 Released
The second beta release of the 0.8 series is now released.
This release fixes some regressions found in 0.8.0b1 and improves upon some of what's new in 0.8. In particular, a second rework of the "pathing" mechanics which relate loader strategies to entity paths allows for more elaborate "polymorphic" loading schemes than before. The Postgresql HSTORE type has now been added fully to the Postgresql dialect, and there are many dialect-specific fixes including several for Oracle.
It is hoped that 0.8.0b2 will be the last beta before 0.8, and to encourage more user testing, the release is available on Pypi. Applications which absolutely need to stay on 0.7 should tag their requirements to "SQLAlchemy < 0.8" to prevent inadvertent installs of 0.8.
Users new to 0.8 should start by reading the What's New in 0.8 document, which introduces major new features as well as areas where applications may experience a behavioral change. The 0.8.0b2 Changelog will enumerate most changes in detail.
Download SQLAlchemy 0.8.0b2 on the download page.