From a7bee7279bbb060a2181008b457a96f809358184 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Tue, 11 Oct 2022 12:54:14 -0400 Subject: [PATCH] Add logic to automatically split up large UPDATE MANY queries --- py_dbcn/connectors/core/records.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/py_dbcn/connectors/core/records.py b/py_dbcn/connectors/core/records.py index 231eb81..593953b 100644 --- a/py_dbcn/connectors/core/records.py +++ b/py_dbcn/connectors/core/records.py @@ -259,6 +259,26 @@ class BaseRecords: :param display_query: Bool indicating if query should output to console. Defaults to True. :param display_results: Bool indicating if results should output to console. Defaults to True. """ + # Check provided size. + upper_limit = 10000 # 10,000 limit for now. + if len(values_clause) > upper_limit: + print('Subdividing query.') + # Exceeds upper limit. Recursively call self on smaller subsets. + for index in range(0, len(values_clause), upper_limit): + print(' Range [{0}:{1}]'.format(index, index + upper_limit)) + self.update_many( + table_name, + columns_clause, + values_clause[index:index + upper_limit], + where_columns_clause, + column_types_clause=column_types_clause, + display_query=display_query, + display_results=display_results, + ) + + # Terminate once all recursive calls have finished. + return + # Check that provided table name is valid format. if not self._base.validate.table_name(table_name): raise ValueError('Invalid table name of "{0}".'.format(table_name)) -- GitLab