diff options
| -rw-r--r-- | lib/sqlalchemy/sql/crud.py | 8 | ||||
| -rw-r--r-- | test/sql/test_update.py | 4 |
2 files changed, 8 insertions, 4 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 diff --git a/test/sql/test_update.py b/test/sql/test_update.py index 5db5fed11..1eed37832 100644 --- a/test/sql/test_update.py +++ b/test/sql/test_update.py @@ -873,7 +873,9 @@ class UpdateTest(_UpdateFromTestBase, fixtures.TablesTest, AssertsCompiledSQL): column("data2", ARRAY(Integer)), ) - stmt = t.update().values({t.c.data1[5]: 7, t.c.data2[10]: 18}) + stmt = t.update().ordered_values( + (t.c.data1[5], 7), (t.c.data2[10], 18) + ) dialect = default.StrCompileDialect() dialect.paramstyle = "qmark" dialect.positional = True |
