SQLAlchemy 1.2.16 发布了，SQLAlchemy 是一个 Python 的 SQL 工具包以及数据库对象关系映射框架。它包含整套企业级持久化模式，专门用于高效和高性能的数据库访问。
此版本更新包含了一系列 dialect 和引擎级的修复，以及包含非 ascii 字符的 DBAPI 异常消息的 Unicode 解码的1.2回滚。具体更新如下：
- engine Fixed a regression introduced in version 1.2 where a refactor of the
SQLAlchemyErrorbase exception class introduced an inappropriate coercion of a plain string message into Unicode under python 2k, which is not handled by the Python interpreter for characters outside of the platform’s encoding (typically ascii). The
SQLAlchemyErrorclass now passes a bytestring through under Py2K for
__str__()as is the behavior of exception objects in general under Py2K, does a safe coercion to unicode utf-8 with backslash fallback for
__unicode__(). For Py3K the message is typically unicode already, but if not is again safe-coerced with utf-8 with backslash fallback for the
- sql mysql Fixed issue where the DDL emitted for
DropTableComment, which will be used by an upcoming version of Alembic, was incorrect for the MySQL and Oracle databases.
- postgresql Fixed issue where a
postgresql.ENUMor a custom domain present in a remote schema would not be recognized within column reflection if the name of the enum/domain or the name of the schema required quoting. A new parsing scheme now fully parses out quoted or non-quoted tokens including support for SQL-escaped quotes.
- postgresql Fixed issue where multiple
postgresql.ENUMobjects referred to by the same
MetaDataobject would fail to be created if multiple objects had the same name under different schema names. The internal memoization the PostgreSQL dialect uses to track if it has created a particular
postgresql.ENUMin the database during a DDL creation sequence now takes schema name into account.
- sqlite Reflection of an index based on SQL expressions are now skipped with a warning, in the same way as that of the Postgresql dialect, where we currently do not support reflecting indexes that have SQL expressions within them. Previously, an index with columns of None were produced which would break tools like Alembic.
- Fixed issue in “expanding IN” feature where using the same bound parameter name more than once in a query would lead to a KeyError within the process of rewriting the parameters in the query.¶