summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/sql/crud.py8
-rw-r--r--test/sql/test_update.py4
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