]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Change flag name execute_values_page_size to executemany_page_size
authorYuval Dinari <>
Sun, 28 Jul 2019 08:57:32 +0000 (11:57 +0300)
committerYuval Dinari <>
Sun, 28 Jul 2019 08:59:49 +0000 (11:59 +0300)
- Remove unnecessary constructor override in PGCompiler_psycopg2
Fixes: #4623
lib/sqlalchemy/dialects/postgresql/psycopg2.py
test/dialect/postgresql/test_dialect.py

index ec33e77f9391b7458c66dcf1dddc636acd4f5e87..df777f765c682efac3e0f78a136a505e0d4e6d51 100644 (file)
@@ -77,7 +77,7 @@ psycopg2-specific keyword arguments which are accepted by
 
     :ref:`psycopg2_batch_mode`
 
-* ``execute_values_page_size``: When ``executemany_mode`` is ``'executemany_values'``, this flag
+* ``executemany_page_size``: When ``executemany_mode`` is ``'executemany_values'``, this flag
   determines the maximum number of rows to insert in a single request to the database.
   If there are more rows than that, they will be sent in several requests (each
   containing a single query). Default value is 10000.
@@ -589,30 +589,17 @@ class PGExecutionContext_psycopg2(PGExecutionContext):
 
 
 class PGCompiler_psycopg2(PGCompiler):
-    def __init__(
-        self, dialect, statement, column_keys=None, inline=False, **kwargs
-    ):
-        self.dialect = dialect
-        self.multiple_rows = inline
-        self.execute_values_insert_template = None
-
-        super(
-            PGCompiler_psycopg2,
-            PGCompiler_psycopg2).__init__(
-            self,
-            dialect,
-            statement,
-            column_keys,
-            inline,
-            **kwargs)
+    execute_values_insert_template = None
 
     # Override SQLCompiler.generate_values_placeholders_str - enable use of
     # psycopg2 execute_values()
     def generate_values_placeholders_str(
             self, crud_params, returning_clause_exists):
+
         # Currently not using psycopg2.execute_values() when there's a returning clause; need to add support
         # for receiving multiple return values from insert query
-        if self.multiple_rows and not returning_clause_exists and self.dialect.psycopg2_executemany_mode is EXECUTEMANY_VALUES:
+        # Note: self.inline is true iff there are multiple parameters sets to the query
+        if self.inline and not returning_clause_exists and self.dialect.psycopg2_executemany_mode is EXECUTEMANY_VALUES:
             self.execute_values_insert_template = "(" + \
                 ", ".join([c[1] for c in crud_params]) + ")"
             return " VALUES %s"
@@ -688,7 +675,7 @@ class PGDialect_psycopg2(PGDialect):
         use_native_hstore=True,
         use_native_uuid=True,
         executemany_mode=None,
-        execute_values_page_size=10000,
+        executemany_page_size=10000,
         use_batch_mode=False,
         **kwargs
     ):
@@ -707,7 +694,7 @@ class PGDialect_psycopg2(PGDialect):
         else:
             self.psycopg2_executemany_mode = None
 
-        self.psycopg2_execute_values_page_size = execute_values_page_size
+        self.psycopg2_executemany_page_size = executemany_page_size
         self.psycopg2_batch_mode = use_batch_mode
 
         # use_batch_mode supported for backward compatibility. To avoid having to check two flags,
@@ -873,7 +860,7 @@ class PGDialect_psycopg2(PGDialect):
                 statement,
                 parameters,
                 template=context.compiled.execute_values_insert_template,
-                page_size=self.psycopg2_execute_values_page_size)
+                page_size=self.psycopg2_executemany_page_size)
 
         else:  # EXECUTEMANY_VALUES of non-insert query, or EXECUTEMANY_BATCH
             self._psycopg2_extras().execute_batch(cursor, statement, parameters)
index 5a11ef3cbb30f49368c6b03e9b9ffb1e93dbb9cb..7a3d0cc27495e45da23db337a6c9d0d875f0e5a0 100644 (file)
@@ -314,7 +314,7 @@ class ExecuteValuesInsertsTest(fixtures.TablesTest):
 
     def test_execute_values_arguments_page_size(self):
         self.engine = engines.testing_engine(
-            options={"executemany_mode": "executemany_values", "execute_values_page_size": 5000})
+            options={"executemany_mode": "executemany_values", "executemany_page_size": 5000})
 
         def execute_values(cur, sql, argslist, template=None, page_size=100):
             assert sql == "INSERT INTO data (x, y) VALUES %s"