diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-08-11 17:46:11 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-08-11 17:46:11 -0400 |
commit | 180ae7c1a53385f72b0047496ac001ec5099cc3e (patch) | |
tree | ad5475c9ae40f9d4a4cae8c3514b4f83d4649fcb /lib/sqlalchemy/sql/crud.py | |
parent | 5b44be7a13ccefc46b8a69fd95677051de5f3bf7 (diff) | |
download | sqlalchemy-180ae7c1a53385f72b0047496ac001ec5099cc3e.tar.gz |
Correct for update.ordered_values() and use in new test
The test for the parameter fix in c0685e5f41 was not working
deterministically on Python 2, so use ordered_values(), however
a second issue in ordered_values() was assuming each element was a
column, so also test for array-assignment expressions with
ordered_values.
Change-Id: I944c72a52700ffb4ab5ae1a83ae21f1efc84b505
Diffstat (limited to 'lib/sqlalchemy/sql/crud.py')
-rw-r--r-- | lib/sqlalchemy/sql/crud.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/sqlalchemy/sql/crud.py b/lib/sqlalchemy/sql/crud.py index 7d0616da7..b049b2f33 100644 --- a/lib/sqlalchemy/sql/crud.py +++ b/lib/sqlalchemy/sql/crud.py @@ -337,9 +337,11 @@ def _scan_cols( _column_as_key(key) for key in compile_state._parameter_ordering ] ordered_keys = set(parameter_ordering) - cols = [stmt.table.c[key] for key in parameter_ordering] + [ - c for c in stmt.table.c if c.key not in ordered_keys - ] + cols = [ + stmt.table.c[key] + for key in parameter_ordering + if isinstance(key, util.string_types) and key in stmt.table.c + ] + [c for c in stmt.table.c if c.key not in ordered_keys] else: cols = stmt.table.columns |