diff options
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql/dml.py')
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/dml.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/dml.py b/lib/sqlalchemy/dialects/mysql/dml.py index 6c50dcca9..d57a89090 100644 --- a/lib/sqlalchemy/dialects/mysql/dml.py +++ b/lib/sqlalchemy/dialects/mysql/dml.py @@ -2,6 +2,7 @@ from ... import exc from ... import util from ...sql.base import _exclusive_against from ...sql.base import _generative +from ...sql.base import ColumnCollection from ...sql.dml import Insert as StandardInsert from ...sql.elements import ClauseElement from ...sql.expression import alias @@ -145,6 +146,17 @@ class OnDuplicateClause(ClauseElement): self._parameter_ordering = [key for key, value in update] update = dict(update) - if not update or not isinstance(update, dict): - raise ValueError("update parameter must be a non-empty dictionary") + if isinstance(update, dict): + if not update: + raise ValueError( + "update parameter dictionary must not be empty" + ) + elif isinstance(update, ColumnCollection): + update = dict(update) + else: + raise ValueError( + "update parameter must be a non-empty dictionary " + "or a ColumnCollection such as the `.c.` collection " + "of a Table object" + ) self.update = update |
