rel_2_0_24
版本发布时间: 2023-12-29 00:23:02
sqlalchemy/sqlalchemy最新发布版本:rel_1_4_54(2024-09-05 23:54:22)
2.0.24
Released: December 28, 2023
orm
-
[orm] [bug] Improved a fix first implemented for #3208 released in version 0.9.8, where the registry of classes used internally by declarative could be subject to a race condition in the case where individual mapped classes are being garbage collected at the same time while new mapped classes are being constructed, as can happen in some test suite configurations or dynamic class creation environments. In addition to the weakref check already added, the list of items being iterated is also copied first to avoid "list changed while iterating" errors. Pull request courtesy Yilei Yang.
This change is also backported to: 1.4.51
References: #10782
-
[orm] [bug] Fixed issue where use of
_orm.foreign()
annotation on a non-initialized_orm.mapped_column()
construct would produce an expression without a type, which was then not updated at initialization time of the actual column, leading to issues such as relationships not determininguse_get
appropriately.References: #10597
-
[orm] [bug] Improved the error message produced when the unit of work process sets the value of a primary key column to NULL due to a related object with a dependency rule on that column being deleted, to include not just the destination object and column name but also the source column from which the NULL value is originating. Pull request courtesy Jan Vollmer.
References: #10668
-
[orm] [bug] Modified the
__init_subclass__()
method used by_orm.MappedAsDataclass
,_orm.DeclarativeBase
and_orm.DeclarativeBaseNoMeta
to accept arbitrary**kw
and to propagate them to thesuper()
call, allowing greater flexibility in arranging custom superclasses and mixins which make use of__init_subclass__()
keyword arguments. Pull request courtesy Michael Oliver.References: #10732
-
[orm] [bug] Ensured the use case of
Bundle
objects used in thereturning()
portion of ORM-enabled INSERT, UPDATE and DELETE statements is tested and works fully. This was never explicitly implemented or tested previously and did not work correctly in the 1.4 series; in the 2.0 series, ORM UPDATE/DELETE with WHERE criteria was missing an implementation method preventingBundle
objects from working.References: #10776
-
[orm] [bug] Fixed 2.0 regression in
MutableList
where a routine that detects sequences would not correctly filter out string or bytes instances, making it impossible to assign a string value to a specific index (while non-sequence values would work fine).References: #10784
engine
-
[engine] [bug] Fixed URL-encoding of the username and password components of
engine.URL
objects when converting them to string using the_engine.URL.render_as_string()
method, by using Python standard libraryurllib.parse.quote
while allowing for plus signs and spaces to remain unchanged as supported by SQLAlchemy's non-standard URL parsing, rather than the legacy home-grown routine from many years ago. Pull request courtesy of Xavier NUNN.References: #10662
sql
-
[sql] [bug] Fixed issue in stringify for SQL elements, where a specific dialect is not passed, where a dialect-specific element such as the PostgreSQL "on conflict do update" construct is encountered and then fails to provide for a stringify dialect with the appropriate state to render the construct, leading to internal errors.
References: #10753
-
[sql] [bug] Fixed issue where stringifying or compiling a
CTE
that was against a DML construct such as an_sql.insert()
construct would fail to stringify, due to a mis-detection that the statement overall is an INSERT, leading to internal errors.
schema
-
[schema] [bug] Fixed issue where error reporting for unexpected schema item when creating objects like
_schema.Table
would incorrectly handle an argument that was itself passed as a tuple, leading to a formatting error. The error message has been modernized to use f-strings.References: #10654
typing
-
[typing] [bug] Completed pep-484 typing for the
sqlalchemy.sql.functions
module._sql.select()
constructs made againstfunc
elements should now have filled-in return types.References: #6810
asyncio
-
[asyncio] [change] The
async_fallback
dialect argument is now deprecated, and will be removed in SQLAlchemy 2.1. This flag has not been used for SQLAlchemy's test suite for some time. asyncio dialects can still run in a synchronous style by running code within a greenlet using_util.greenlet_spawn()
.
postgresql
-
[postgresql] [bug] Adjusted the asyncpg dialect such that when the
terminate()
method is used to discard an invalidated connection, the dialect will first attempt to gracefully close the connection using.close()
with a timeout, if the operation is proceeding within an async event loop context only. This allows the asyncpg driver to attend to finalizing aTimeoutError
including being able to close a long-running query server side, which otherwise can keep running after the program has exited.References: #10717
mysql
-
[mysql] [bug] Fixed regression introduced by the fix in ticket #10492 when using pool pre-ping with PyMySQL version older than 1.0.
This change is also backported to: 1.4.51
References: #10650
-
[mysql] [bug] Fixed regression introduced by the fix in ticket #10492 when using pool pre-ping with PyMySQL version older than 1.0.
This change is also backported to: 1.4.51
References: #10650
tests
-
[tests] [bug] Improvements to the test suite to further harden its ability to run when Python
greenlet
is not installed. There is now a tox target that includes the token "nogreenlet" that will run the suite with greenlet not installed (note that it still temporarily installs greenlet as part of the tox config, however).References: #10747
1、 SQLAlchemy-2.0.24-cp310-cp310-macosx_10_9_x86_64.whl 1.98MB
2、 SQLAlchemy-2.0.24-cp310-cp310-macosx_11_0_arm64.whl 1.97MB
3、 SQLAlchemy-2.0.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.9MB
4、 SQLAlchemy-2.0.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.91MB
5、 SQLAlchemy-2.0.24-cp310-cp310-musllinux_1_1_aarch64.whl 2.95MB
6、 SQLAlchemy-2.0.24-cp310-cp310-musllinux_1_1_x86_64.whl 2.94MB
7、 SQLAlchemy-2.0.24-cp310-cp310-win32.whl 1.95MB
8、 SQLAlchemy-2.0.24-cp310-cp310-win_amd64.whl 1.97MB
9、 SQLAlchemy-2.0.24-cp311-cp311-macosx_10_9_x86_64.whl 1.98MB
10、 SQLAlchemy-2.0.24-cp311-cp311-macosx_11_0_arm64.whl 1.97MB
11、 SQLAlchemy-2.0.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 3.03MB
12、 SQLAlchemy-2.0.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 3.03MB
13、 SQLAlchemy-2.0.24-cp311-cp311-musllinux_1_1_aarch64.whl 3.04MB
14、 SQLAlchemy-2.0.24-cp311-cp311-musllinux_1_1_x86_64.whl 3.03MB
15、 SQLAlchemy-2.0.24-cp311-cp311-win32.whl 1.95MB
16、 SQLAlchemy-2.0.24-cp311-cp311-win_amd64.whl 1.97MB
17、 SQLAlchemy-2.0.24-cp312-cp312-macosx_10_9_x86_64.whl 1.98MB
18、 SQLAlchemy-2.0.24-cp312-cp312-macosx_11_0_arm64.whl 1.97MB
19、 SQLAlchemy-2.0.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 3.07MB
20、 SQLAlchemy-2.0.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 3.08MB
21、 SQLAlchemy-2.0.24-cp312-cp312-musllinux_1_1_aarch64.whl 3.07MB
22、 SQLAlchemy-2.0.24-cp312-cp312-musllinux_1_1_x86_64.whl 3.08MB
23、 SQLAlchemy-2.0.24-cp312-cp312-win32.whl 1.95MB
24、 SQLAlchemy-2.0.24-cp312-cp312-win_amd64.whl 1.97MB
25、 SQLAlchemy-2.0.24-cp37-cp37m-macosx_10_9_x86_64.whl 1.98MB
26、 SQLAlchemy-2.0.24-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.82MB
27、 SQLAlchemy-2.0.24-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.83MB
28、 SQLAlchemy-2.0.24-cp37-cp37m-musllinux_1_1_aarch64.whl 2.84MB
29、 SQLAlchemy-2.0.24-cp37-cp37m-musllinux_1_1_x86_64.whl 2.84MB
30、 SQLAlchemy-2.0.24-cp37-cp37m-win32.whl 1.95MB
31、 SQLAlchemy-2.0.24-cp37-cp37m-win_amd64.whl 1.97MB
32、 SQLAlchemy-2.0.24-cp38-cp38-macosx_10_9_x86_64.whl 1.98MB
33、 SQLAlchemy-2.0.24-cp38-cp38-macosx_11_0_arm64.whl 1.97MB
34、 SQLAlchemy-2.0.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.93MB
35、 SQLAlchemy-2.0.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.93MB
36、 SQLAlchemy-2.0.24-cp38-cp38-musllinux_1_1_aarch64.whl 2.98MB
37、 SQLAlchemy-2.0.24-cp38-cp38-musllinux_1_1_x86_64.whl 2.98MB
38、 SQLAlchemy-2.0.24-cp38-cp38-win32.whl 1.95MB
39、 SQLAlchemy-2.0.24-cp38-cp38-win_amd64.whl 1.97MB
40、 SQLAlchemy-2.0.24-cp39-cp39-macosx_10_9_x86_64.whl 1.98MB
41、 SQLAlchemy-2.0.24-cp39-cp39-macosx_11_0_arm64.whl 1.97MB
42、 SQLAlchemy-2.0.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 2.92MB
43、 SQLAlchemy-2.0.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 2.93MB
44、 SQLAlchemy-2.0.24-cp39-cp39-musllinux_1_1_aarch64.whl 2.96MB
45、 SQLAlchemy-2.0.24-cp39-cp39-musllinux_1_1_x86_64.whl 2.96MB
46、 SQLAlchemy-2.0.24-cp39-cp39-win32.whl 1.95MB
47、 SQLAlchemy-2.0.24-cp39-cp39-win_amd64.whl 1.97MB
48、 SQLAlchemy-2.0.24-py3-none-any.whl 1.78MB