News and Updates
SQLAlchemy 1.1.0b1 Released
SQLAlchemy release 1.1.0b1 is now available.
This is the first beta release in the new 1.1 series of SQLAlchemy. Users are encouraged to ensure that their pip installations are up-to-date, so that version 1.1.0b1 will only install if explcitly specified using the --pre flag.
The 1.1 series includes a wide variety of enhancements and behavioral improvements across all areas, including Core, ORM and dialects. In particular, the 1.1 series has an especially long list of new capabilities targeted at the Postgresql database. This is largely thanks to a much larger volume of user contributions to the codebase this time around, as well as a focus on Postgresql overall as this platform continues to add new features at a very high rate.
Key highlights of version 1.1 include:
- Sesion lifecycle events - Within the ORM, the entire Session lifecycle is now trackable via events on a per-object basis, allowing code to be notified when objects are added to sessions, when they become persistent, detached, deleted, etc.
- CTE support for INSERT, UPDATE, DELETE - Common table expressions are now fully compatible with INSERT, UPDATE and DELETE expressions, as is most commonly used with Postgresql.
- JSON / ARRAY Support in Core, MySQL JSON - The Postgresql JSON and ARRAY types are greatly enhanced, and are built on top of Core versions of these constructs that work generically without the need to import special Postgresql datatypes. The JSON type in particular also works on newer MySQL versions (as of version 5.7) and provides some degree of behavioral parity vs. the Postgresql version.
- Support for LATERAL, TABLESAMPLE, WITHIN GROUP - among a number of newly supported SQL standard constructs are these widely requested SQL constructs, all supported by the Postgresql backend.
- Support for INSERT..ON CONFLICT - SQLAlchemy's first foray into the realm of "upserts" is provided via Postgresql 9.5's "INSERT..ON CONFLICT" syntax, now fully supported using a Postgresql specific version of the insert() function.
- Result set improvements - the internal mechanics of result sets are further enhanced to take more advantage of positional column targeting, that is, matching up columns from a SQL expression object to the result row itself based on the known position in the row, rather than through matching string names. This improves both the resiliency of the result set system (much fewer "can't find column X in row" types of errors) as well as its performance.
Users should carefully review the What's New in SQLAlchemy 1.1? document as well as the Changelog to note which behaviors and issues are affected. We'd like to thank the many contributors who helped with this release.
SQLAlchemy 1.1.0b1 is available on the Download Page.
SQLAlchemy 1.0.13 Released
SQLAlchemy release 1.0.13 is now available.
Release 1.0.13 fixes a variety of issues targeted at the 1.0 series that have been resolved over the past several weeks. Fixes include small issues repaired in the ORM, Core, Postgresql, Oracle, SQL Server dialects. Most issues are very minor with the exception of one issue involving Oracle LOB types in conjunction with query caching (such as that used by the sqlalchemy.ext.baked) extension which would cause result set fetches to fail.
Changelog for 1.0.13 is at:
SQLAlchemy 1.0.13 is available on the Download Page.
SQLAlchemy 1.0.12 Released
SQLAlchemy release 1.0.12 is now available.
Release 1.0.12 is a bug fix release resolving a handful of issues reported in the past few weeks. Primary development continues on the 1.1 series which is slated for initial releases in the spring.
1.0.12 includes relatively minor fixes, including a revision to a fix made for version 1.0.10 where we're attempting to report on the "cause" of an error that is interrupted by a later failure to emit a ROLLBACK on the MySQL platform. While Python 3 solves this problem using exception chaining and cause reporting, on Python 2 we emit a warning so that the cause isn't totally concealed. The condition has been expanded to emit this warning in a much wider range of scenarios.
Changelog for 1.0.12 is at:
SQLAlchemy 1.0.12 is available on the Download Page.
SQLAlchemy 1.0.11 Released
SQLAlchemy release 1.0.11 is now available.
Release 1.0.11, only twelve days after 1.0.10's release, is expedited to correct for one ORM-related regression introduced by a 1.0.10 fix; some other fairly significant bugfixes involving more recently added features, all reported subsequent to the release of 1.0.10, were also fixed. Fixes include a major issue in the "baked lazy loader" extension when used as a systemwide-replacement for lazy loading, a major series of fixes to the "eager_defaults" mapper persistence option, and a revision to 1.0.10's fix for a particular polymorphic joined-eager loading issue.
Changelog for 1.0.11 is at:
SQLAlchemy 1.0.11 is available on the Download Page.
SQLAlchemy 1.0.10 Released
SQLAlchemy release 1.0.10 is now available.
Release 1.0.10 continues with maintenance fixes as we continue major development on the 1.1 series. Fixes here include a handful of fairly obscure ORM issues, as our userbase continues to use the new loader option system introduced in 0.9 more deeply, some adjustments to internals to work more smoothly with the latest Python 3.5 and upcoming 3.6 versions, an array of dialect-specific fixes, and a pretty important fix to the new "baked query" extension. There's also one new feature which is the ability to render an UPDATE statement with a specific ordering of the SET clauses.
Changelog for 1.0.10 is at:
SQLAlchemy 1.0.10 is available on the Download Page.