]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
* Use util.symbol.parse_user_argument() to parse executemany_mode option 4764/head
authorYuval Dinari <>
Mon, 12 Aug 2019 08:39:31 +0000 (11:39 +0300)
committerYuval Dinari <>
Mon, 12 Aug 2019 08:39:31 +0000 (11:39 +0300)
* Correct test to check for error in the format util.symbol.parse_user_argument() issues
Fixes: #4623
lib/sqlalchemy/dialects/postgresql/psycopg2.py
test/dialect/postgresql/test_dialect.py

index 88570d4fbb43139e22afc03b8b747eaccd8a98f0..1557c6324e3475aa1a1547407af6ccccf269a296 100644 (file)
@@ -689,17 +689,18 @@ class PGDialect_psycopg2(PGDialect):
         self.supports_unicode_binds = use_native_unicode
         self.client_encoding = client_encoding
 
-        if executemany_mode:
-            if executemany_mode not in (
-                    EXECUTEMANY_DEFAULT.name,
-                    EXECUTEMANY_BATCH.name,
-                    EXECUTEMANY_VALUES.name):
-                raise exc.ArgumentError(
-                    "Unsupported value for 'executemany_mode': %s" %
-                    executemany_mode)
-            self.psycopg2_executemany_mode = util.symbol(executemany_mode)
-        else:
-            self.psycopg2_executemany_mode = None
+        # Parse executemany_mode argument, allowing it to be only one of the
+        # symbol names
+        self.psycopg2_executemany_mode = util.symbol.parse_user_argument(
+            executemany_mode,
+            {
+                EXECUTEMANY_DEFAULT: [],
+                EXECUTEMANY_BATCH: [],
+                EXECUTEMANY_VALUES: []
+            },
+            "executemany_mode",
+            resolve_symbol_names=True
+        )
 
         if not isinstance(executemany_page_size, int):
             raise exc.ArgumentError(
index 38e08c6169121e2f320074c1a8b31c92d65f65b5..c7bb5ca23fb371894450b23ca7f0f961f10e96a7 100644 (file)
@@ -425,7 +425,7 @@ class ExecutemanyFlagOptionsTest(fixtures.TablesTest):
         for opt in [1, True, "batch_insert"]:
             assert_raises_message(
                 exc.ArgumentError,
-                "Unsupported value for 'executemany_mode': %s" % opt,
+                "Invalid value for 'executemany_mode': %r" % opt,
                 engines.testing_engine,
                 options={"executemany_mode": opt}
             )