News and Updates

SQLAlchemy 1.1.12 Released


SQLAlchemy release 1.1.12 is now available.

This release repairs an issue in the test suite that would prevent the suite from passing on Python version 3.6.2. The release is made at the same time as that of release 1.0.18 and 1.2.0b2. Also included are fixes related to ORM use of JSON NULL values, subquery eager loading, and a stability enhancement involving the identity map when used under high concurrency.

Changelog for 1.1.12 is at Changelog.

SQLAlchemy 1.1.12 is available on the Download Page.

SQLAlchemy 1.0.18 Released


SQLAlchemy release 1.0.18 is now available.

This release repairs an issue in the test suite that would prevent the suite from passing on Python version 3.6.2. The release is made at the same time as that of release 1.1.12 and 1.2.0b2. Additionally, a backport from release 1.1.7 allowing cx_Oracle 5.3 to work correctly is included in this release.

Changelog for 1.0.18 is at Changelog.

SQLAlchemy 1.0.18 is available on the Download Page.

SQLAlchemy 1.2.0b1 Released


SQLAlchemy release 1.2.0b1 is now available.

This is the first beta for the 1.2 series of SQLAlchemy. As is always the case for beta releases, the release is available on Pypi, but only installable when specifying the --pre flag with pip.

Key highlights of version 1.2 include:

  • Connection pool pre-ping - The connection pool now includes an optional "pre ping" feature that will test the "liveness" of a pooled connection for every connection checkout, transparently recycling the DBAPI connection if the database is disconnected. This feature eliminates the need for the "pool recycle" flag as well as the issue of errors raised when a pooled connection is used after a database restart.
  • New eagerloading features - an all-new eager loader called "selectin" is added. This loader is similar to "subquery" eager loading, but foregoes embedding a complex subquery in favor of using a simple IN expression which uses the primary key values of the just-loaded objects to locate related rows. This style of loading will perform dramatically better than "subquery" eager loading in many cases.
  • New polymorphic loading options - A new "selectin" loader is also implemented for polymorphic inheritance hierarchies, which will load the extra table rows for subclasses in a result set all at once, without the need to use JOIN or "with_polymorphic". New declarative options are added to allow per-subclass polymorphic loading configuration as well.
  • The IN operator now emits a simple expression for empty IN - The long standing behavior of "empty in" resolving to a non-performant expression with a warning has been removed as default behavior; for an IN with no elements, a simple 1 != 1 expression is now used to evaluate to "false".
  • INSERT..ON DUPLICATE KEY UPDATE support in MySQL - complementing the support for PostgreSQL "INSERT..ON CONFLICT" in 1.1, the MySQL dialect now supports the ON DUPLICATE KEY phrase. Simple database-agnostic "merge" routines can now be composed against these two backends.
  • COMMENT Support - thanks to a generous contribution, version 1.2 can emit all necessary DDL as well as fully reflect SQL comments for tables and columns against the MySQL, PostgreSQL, and Oracle backends.
  • SQL expression caching within ORM loaders - the "lazyload" feature as well as the new "selectin" loading now use SQL expression caching using the "baked query" extension when emitting queries, removing a significant bulk of Python overhead from these very common operations.

Users should carefully review the What's New in SQLAlchemy 1.2? 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.2.0b1 is available on the Download Page.

SQLAlchemy 1.1.11 Released


SQLAlchemy release 1.1.11 is now available.

Release 1.1.11 includes a series of fixes providing forwards-compatibility with a variety new behaviors in supported databases. A few other core fixes and one ORM-related fix is also included.

Changelog for 1.1.11 is at Changelog.

SQLAlchemy 1.1.11 is available on the Download Page.

SQLAlchemy 1.1.10 Released


SQLAlchemy release 1.1.10 is now available.

Release 1.1.10 contains a short series of fixes to specific behaviors, primarily in Core, as well as one issue with "delete orphan" cascade when using inheriting mappers. No regressions were encountered since 1.1.9. Release 1.1.10 is recommended for users who are impacted by the specific issues listed.

Changelog for 1.1.10 is at Changelog.

SQLAlchemy 1.1.10 is available on the Download Page.