Bump sqlalchemy from 1.3.20 to 1.4.8
Bumps sqlalchemy from 1.3.20 to 1.4.8.
Release notes
Sourced from sqlalchemy's releases.
1.4.8
Released: April 15, 2021
orm
[orm] [bug] [regression] Fixed a cache leak involving the
_orm.with_expression()
loader option, where the given SQL expression would not be correctly considered as part of the cache key.Additionally, fixed regression involving the corresponding
_orm.query_expression()
feature. While the bug technically exists in 1.3 as well, it was not exposed until 1.4. The "default expr" value ofnull()
would be rendered when not needed, and additionally was also not adapted correctly when the ORM rewrites statements such as when using joined eager loading. The fix ensures "singleton" expressions likeNULL
andtrue
aren't "adapted" to refer to columns in ORM statements, and additionally ensures that a_orm.query_expression()
with no default expression doesn't render in the statement if a_orm.with_expression()
isn't used.References: #6259
[orm] [bug] Fixed issue in the new feature of
_orm.Session.refresh()
introduced by #1763 where eagerly loaded relationships are also refreshed, where thelazy="raise"
andlazy="raise_on_sql"
loader strategies would interfere with the_orm.immediateload()
loader strategy, thus breaking the feature for relationships that were loaded with_orm.selectinload()
,_orm.subqueryload()
as well.References: #6252
engine
- [engine] [bug] The
_engine.Dialect.has_table()
method now raises an informative exception if a non-Connection is passed to it, as this incorrect behavior seems to be common. This method is not intended for external use outside of a dialect. Please use theInspector.has_table()
method or for cross-compatibility with older SQLAlchemy versions, the_engine.Engine.has_table()
method.sql
- [sql] [feature] The tuple returned by
CursorResult.inserted_primary_key
is now a_result.Row
object with a named tuple interface on top of the existing tuple interface.
... (truncated)
Commits
- See full diff in compare view