diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-02-13 23:21:04 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2021-02-14 14:51:45 -0500 |
| commit | d9770099553702151e26e3b5d9f24b94c414887e (patch) | |
| tree | 757f5e11c267c65a88852a2f29e308c68e07140e /lib/sqlalchemy/sql | |
| parent | 63f57014ef72eb0a32111777fc006bebf7ce0cc5 (diff) | |
| download | sqlalchemy-d9770099553702151e26e3b5d9f24b94c414887e.tar.gz | |
Allow update.returing() to work with from_statement()
The ORM used in :term:`2.0 style` can now return ORM objects from the rows
returned by an UPDATE..RETURNING or INSERT..RETURNING statement, by
supplying the construct to :meth:`_sql.Select.from_statement` in an ORM
context.
Change-Id: I59c9754ff1cb3184580dd5194ecd2971d4e7f8e8
References: #5940
Diffstat (limited to 'lib/sqlalchemy/sql')
| -rw-r--r-- | lib/sqlalchemy/sql/dml.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py index 3f492a490..ea10bfc27 100644 --- a/lib/sqlalchemy/sql/dml.py +++ b/lib/sqlalchemy/sql/dml.py @@ -47,6 +47,10 @@ class DMLState(CompileState): def __init__(self, statement, compiler, **kw): raise NotImplementedError() + @property + def dml_table(self): + return self.statement.table + def _make_extra_froms(self, statement): froms = [] @@ -407,7 +411,9 @@ class UpdateBase( raise exc.InvalidRequestError( "return_defaults() is already configured on this statement" ) - self._returning += cols + self._returning += tuple( + coercions.expect(roles.ColumnsClauseRole, c) for c in cols + ) def _exported_columns_iterator(self): """Return the RETURNING columns as a sequence for this statement. |
