News and Updates

SQLAlchemy 1.2.0 Released

permalink

SQLAlchemy release 1.2.0 is now available.

Release 1.2.0 is the first official release in the 1.2 series, after three beta releases. The release represents the past eighteen months of new feature development since version 1.1 was released.

The 1.2 series has a large mix of features and behavioral enhancements spread across both the Core and ORM components, including in the area of ORM relationship loading, the behavior of the Core IN operator, new SQL constructs such as DELETE..FROM and MySQL's INSERT..ON DUPLICATE KEY UPDATE, as well as a new connection pooling feature that provides for pessimistic connection testing upon checkout.

The migration notes and changelog should cover everything to look for, however some major changes include:

  • Lazy loaders and deferred eager loaders now use the baked query system for a major reduction in Python call overhead
  • A new eager loader called "SELECT IN" loading, similar to subquery eager loading but uses an IN clause with primary keys for significantly faster performance in many situations
  • A variant of "SELECT IN" loading for polymorphic mappings, which allows the sub-table rows of a heterogeneous result of joined inheritance classes to be loaded en-masse without using a LEFT OUTER JOIN up front.
  • The IN operator now allows empty lists in a performant manner, revising a long standing restriction on these expressions
  • A new "expanding IN" clause that allows for arbitrary lists of items to be late-bound to an IN operator just like a single bound parameter
  • Support for psycopg2's recently added "fast execution" helper, allowing for batching of DML statements into larger chunks for a great reduction in network overhead
  • A new connection pool parameter pool_pre_ping, which pings connections upon checkout, thereby eliminating the issue of stale connections in a connection pool
  • Support for table and column comments in DDL and reflection
  • Major reworks of both the cx_Oracle and pyodbc MSSQL and pymssql dialects for greater stability and performance.

There are many more behavioral improvements and changes, all of which are backwards-compatible for but as is always the case, may be surprising in those cases where the sudden appearance of a feature, an assertion that wasn't present earlier, or a fix of a previously undefined or buggy behavior may produce unexpected results or error messages for an existing application. Users should please carefully review the full series of migration notes at What's new in 1.2? to see the full expanse of things that have changed and should always fully test existing applications against the 1.2 series before promoting to production.

The complete changelog for 1.2.0 as well as all the beta releases is at Changelog; we'd like to thank the many contributors who helped with this release.

SQLAlchemy 1.2.0 is available on the Download Page.

SQLAlchemy 1.1.15 Released

permalink

SQLAlchemy release 1.1.15 is now available.

Release 1.1.15 includes fixes for a variety of ORM, Core, and dialect-specific issues.

Changelog for 1.1.15 is at Changelog.

SQLAlchemy 1.1.15 is available on the Download Page.

SQLAlchemy 1.2.0b3 Released

permalink

SQLAlchemy release 1.2.0b3 is now available.

Release 1.2.0b3 is possibly the last beta release before 1.2.0 final is released. The release of 1.2.0b3 was delayed by two major factors. One was the release of cx_Oracle 6.0, which is a complete rework of the underlying client library for cx_Oracle that in turn required a lot of work on the SQLAlchemy side to accommodate, which resulted in SQLAlchemy's cx_Oracle dialect itself being reworked and modernized to make more complete use of patterns that were introduced in the 5.x series of cx_Oracle. The other was made possible by the advent of Microsoft SQL Server for Linux, which has allowed SQL Server testing to finally be part of of SQLAlchemy's continuous integration environment; as a result of this testing effort the library and test suite have had many long-standing SQL Server issues repaired.

On top of those two efforts were the usual stream of issue fixes that are backported into the 1.1.x series as well as additional behavioral adjustments new to the 1.2 series.

The What's New in SQLAlchemy 1.2? document as well as the Changelog will detail these changes as well as the changes since the 1.1 series overall. Users should carefully review these documents when testing applications against the 1.2 series, including for the move from 1.2.0b2 to 1.2.0b3. We'd like to thank the many contributors who helped with this release.

SQLAlchemy 1.2.0b3 is available on the Download Page.

SQLAlchemy 1.1.14 Released

permalink

SQLAlchemy release 1.1.14 is now available.

This release includes a variety of fixes for the ORM. Two of the issues are critical stability issues involving garbage-collection related bugs that are more likely to be seen within the Pypy interpreter however are not necessarily limited to this platform.

Changelog for 1.1.14 is at Changelog.

SQLAlchemy 1.1.14 is available on the Download Page.

SQLAlchemy 1.1.13 Released

permalink

SQLAlchemy release 1.1.13 is now available.

This release modifies the just-released fix for Oracle "WITH_UNICODE" mode based on feedback from cx_Oracle developers, to resolve a performance regression caused by this change.

Changelog for 1.1.13 is at Changelog.

SQLAlchemy 1.1.13 is available on the Download Page.