rel_2_0_23
版本发布时间: 2023-11-02 22:52:13
sqlalchemy/sqlalchemy最新发布版本:rel_2_0_36(2024-10-16 03:41:54)
2.0.23
Released: November 2, 2023
orm
-
[orm] [usecase] Implemented the
_orm.Session.bulk_insert_mappings.render_nulls
parameter for new style bulk ORM inserts, allowingrender_nulls=True
as an execution option. This allows for bulk ORM inserts with a mixture ofNone
values in the parameter dictionaries to use a single batch of rows for a given set of dicationary keys, rather than breaking up into batches that omit the NULL columns from each INSERT.References: #10575
-
[orm] [bug] Fixed issue where the
__allow_unmapped__
directive failed to allow for legacyColumn
/deferred()
mappings that nonetheless had annotations such asAny
or a specific type withoutMapped[]
as their type, without errors related to locating the attribute name.References: #10516
-
[orm] [bug] Fixed caching bug where using the
_orm.with_expression()
construct in conjunction with loader options_orm.selectinload()
,_orm.lazyload()
would fail to substitute bound parameter values correctly on subsequent caching runs.References: #10570
-
[orm] [bug] Fixed bug in ORM annotated declarative where using a
ClassVar
that nonetheless referred in some way to an ORM mapped class name would fail to be interpreted as aClassVar
that's not mapped.References: #10472
sql
-
[sql] [usecase] Implemented "literal value processing" for the
Interval
datatype for both the PostgreSQL and Oracle dialects, allowing literal rendering of interval values. Pull request courtesy Indivar Mishra.References: #9737
-
[sql] [bug] Fixed issue where using the same bound parameter more than once with
literal_execute=True
in some combinations with other literal rendering parameters would cause the wrong values to render due to an iteration issue.This change is also backported to: 1.4.50
References: #10142
-
[sql] [bug] Added compiler-level None/NULL handling for the "literal processors" of all datatypes that include literal processing, that is, where a value is rendered inline within a SQL statement rather than as a bound parameter, for all those types that do not feature explicit "null value" handling. Previously this behavior was undefined and inconsistent.
References: #10535
-
[sql] Removed unused placeholder method
TypeEngine.compare_against_backend()
This method was used by very old versions of Alembic. See https://github.com/sqlalchemy/alembic/issues/1293 for details.
asyncio
-
[asyncio] [bug] Fixed bug with method
_asyncio.AsyncSession.close_all()
that was not working correctly. Also added function_asyncio.close_all_sessions()
that's the equivalent of_orm.close_all_sessions()
. Pull request courtesy of Bryan不可思议.References: #10421
postgresql
-
[postgresql] [bug] Fixed 2.0 regression caused by #7744 where chains of expressions involving PostgreSQL JSON operators combined with other operators such as string concatenation would lose correct parenthesization, due to an implementation detail specific to the PostgreSQL dialect.
References: #10479
-
[postgresql] [bug] Fixed SQL handling for "insertmanyvalues" when using the
postgresql.BIT
datatype with the asyncpg backend. Thepostgresql.BIT
on asyncpg apparently requires the use of an asyncpg-specificBitString
type which is currently exposed when using this DBAPI, making it incompatible with other PostgreSQL DBAPIs that all work with plain bitstrings here. A future fix in version 2.1 will normalize this datatype across all PG backends. Pull request courtesy Sören Oldag.References: #10532
mysql
-
[mysql] [bug] Repaired a new incompatibility in the MySQL "pre-ping" routine where the
False
argument passed toconnection.ping()
, which is intended to disable an unwanted "automatic reconnect" feature, is being deprecated in MySQL drivers and backends, and is producing warnings for some versions of MySQL's native client drivers. It's removed for mysqlclient, whereas for PyMySQL and drivers based on PyMySQL, the parameter will be deprecated and removed at some point, so API introspection is used to future proof against these various stages of removal.This change is also backported to: 1.4.50
References: #10492
mariadb
-
[mariadb] [bug] Adjusted the MySQL / MariaDB dialects to default a generated column to NULL when using MariaDB, if
_schema.Column.nullable
was not specified with an explicitTrue
orFalse
value, as MariaDB does not support the "NOT NULL" phrase with a generated column. Pull request courtesy Indivar.References: #10056
-
[mariadb] [bug] [regression] Established a workaround for what seems to be an intrinsic issue across MySQL/MariaDB drivers where a RETURNING result for DELETE DML which returns no rows using SQLAlchemy's "empty IN" criteria fails to provide a cursor.description, which then yields result that returns no rows, leading to regressions for the ORM that in the 2.0 series uses RETURNING for bulk DELETE statements for the "synchronize session" feature. To resolve, when the specific case of "no description when RETURNING was given" is detected, an "empty result" with a correct cursor description is generated and used in place of the non-working cursor.
References: #10505
mssql
-
[mssql] [usecase] Added support for the
aioodbc
driver implemented for SQL Server, which builds on top of the pyodbc and general aio* dialect architecture.References: #6521
-
[mssql] [bug] [reflection] Fixed issue where identity column reflection would fail for a bigint column with a large identity start value (more than 18 digits).
This change is also backported to: 1.4.50
References: #10504
oracle
-
[oracle] [bug] Fixed issue in
Interval
datatype where the Oracle implementation was not being used for DDL generation, leading to theday_precision
andsecond_precision
parameters to be ignored, despite being supported by this dialect. Pull request courtesy Indivar.References: #10509
-
[oracle] [bug] Fixed issue where the cx_Oracle dialect claimed to support a lower cx_Oracle version (7.x) than was actually supported in practice within the 2.0 series of SQLAlchemy. The dialect imports symbols that are only in cx_Oracle 8 or higher, so runtime dialect checks as well as setup.cfg requirements have been updated to reflect this compatibility.
References: #10470
1、 SQLAlchemy-2.0.23-cp310-cp310-macosx_10_9_x86_64.whl 1.97MB
2、 SQLAlchemy-2.0.23-cp310-cp310-macosx_11_0_arm64.whl 1.96MB
3、 SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.9MB
4、 SQLAlchemy-2.0.23-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.9MB
5、 SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_aarch64.whl 2.94MB
6、 SQLAlchemy-2.0.23-cp310-cp310-musllinux_1_1_x86_64.whl 2.93MB
7、 SQLAlchemy-2.0.23-cp310-cp310-win32.whl 1.94MB
8、 SQLAlchemy-2.0.23-cp310-cp310-win_amd64.whl 1.96MB
9、 SQLAlchemy-2.0.23-cp311-cp311-macosx_10_9_x86_64.whl 1.97MB
10、 SQLAlchemy-2.0.23-cp311-cp311-macosx_11_0_arm64.whl 1.96MB
11、 SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 3.03MB
12、 SQLAlchemy-2.0.23-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 3.03MB
13、 SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_aarch64.whl 3.03MB
14、 SQLAlchemy-2.0.23-cp311-cp311-musllinux_1_1_x86_64.whl 3.03MB
15、 SQLAlchemy-2.0.23-cp311-cp311-win32.whl 1.94MB
16、 SQLAlchemy-2.0.23-cp311-cp311-win_amd64.whl 1.96MB
17、 SQLAlchemy-2.0.23-cp312-cp312-macosx_10_9_x86_64.whl 1.97MB
18、 SQLAlchemy-2.0.23-cp312-cp312-macosx_11_0_arm64.whl 1.96MB
19、 SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 3.06MB
20、 SQLAlchemy-2.0.23-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 3.07MB
21、 SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_aarch64.whl 3.06MB
22、 SQLAlchemy-2.0.23-cp312-cp312-musllinux_1_1_x86_64.whl 3.07MB
23、 SQLAlchemy-2.0.23-cp312-cp312-win32.whl 1.94MB
24、 SQLAlchemy-2.0.23-cp312-cp312-win_amd64.whl 1.96MB
25、 SQLAlchemy-2.0.23-cp37-cp37m-macosx_10_9_x86_64.whl 1.97MB
26、 SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.82MB
27、 SQLAlchemy-2.0.23-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.82MB
28、 SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_aarch64.whl 2.83MB
29、 SQLAlchemy-2.0.23-cp37-cp37m-musllinux_1_1_x86_64.whl 2.83MB
30、 SQLAlchemy-2.0.23-cp37-cp37m-win32.whl 1.94MB
31、 SQLAlchemy-2.0.23-cp37-cp37m-win_amd64.whl 1.97MB
32、 SQLAlchemy-2.0.23-cp38-cp38-macosx_10_9_x86_64.whl 1.97MB
33、 SQLAlchemy-2.0.23-cp38-cp38-macosx_11_0_arm64.whl 1.96MB
34、 SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.92MB
35、 SQLAlchemy-2.0.23-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.93MB
36、 SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_aarch64.whl 2.97MB
37、 SQLAlchemy-2.0.23-cp38-cp38-musllinux_1_1_x86_64.whl 2.97MB
38、 SQLAlchemy-2.0.23-cp38-cp38-win32.whl 1.94MB
39、 SQLAlchemy-2.0.23-cp38-cp38-win_amd64.whl 1.97MB
40、 SQLAlchemy-2.0.23-cp39-cp39-macosx_10_9_x86_64.whl 1.97MB
41、 SQLAlchemy-2.0.23-cp39-cp39-macosx_11_0_arm64.whl 1.96MB
42、 SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.91MB
43、 SQLAlchemy-2.0.23-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.92MB
44、 SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_aarch64.whl 2.96MB
45、 SQLAlchemy-2.0.23-cp39-cp39-musllinux_1_1_x86_64.whl 2.95MB
46、 SQLAlchemy-2.0.23-cp39-cp39-win32.whl 1.94MB
47、 SQLAlchemy-2.0.23-cp39-cp39-win_amd64.whl 1.97MB
48、 SQLAlchemy-2.0.23-py3-none-any.whl 1.77MB