summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects/mysql/dml.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql/dml.py')
-rw-r--r--lib/sqlalchemy/dialects/mysql/dml.py16
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