From ff239a73a81c9cdf30ce83c0fd4022eda5493b73 Mon Sep 17 00:00:00 2001 From: Joe Mancuso Date: Sat, 30 Jan 2021 09:40:49 -0500 Subject: [PATCH 1/2] fixed issue with speed --- src/masoniteorm/query/grammars/BaseGrammar.py | 18 ++++++++++++++---- tests/mssql/grammar/test_mssql_qmark.py | 8 ++++---- tests/mysql/grammar/test_mysql_qmark.py | 10 +++++----- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/masoniteorm/query/grammars/BaseGrammar.py b/src/masoniteorm/query/grammars/BaseGrammar.py index c6afd9b3..8aee69ce 100644 --- a/src/masoniteorm/query/grammars/BaseGrammar.py +++ b/src/masoniteorm/query/grammars/BaseGrammar.py @@ -51,7 +51,7 @@ def __init__( self._connection_details = connection_details or {} self._column = None - self._bindings = () + self._bindings = [] self._sql = "" @@ -129,22 +129,30 @@ def _compile_bulk_create(self, qmark=False): Returns: self """ + print("first get all values") all_values = [list(x.values()) for x in self._columns] + print("all values got") + print("compile sql") self._sql = self.bulk_insert_format().format( key_equals=self._compile_key_value_equals(qmark=qmark), table=self.process_table(self.table), columns=self.columnize_bulk_columns(list(self._columns[0].keys())), values=self.columnize_bulk_values(all_values, qmark=qmark), ) + print("sql compiled") return self def columnize_bulk_columns(self, columns=[]): - return ", ".join( + print("columnize bulk column") + s = ", ".join( self.column_string().format(column=x, separator="") for x in columns ).rstrip(",") + print("columnized bulk columns") + return s def columnize_bulk_values(self, columns=[], qmark=False): + print("columnize bulk values") sql = "" for x in columns: inner = "" @@ -171,6 +179,7 @@ def columnize_bulk_values(self, columns=[], qmark=False): ) ) + print("columnized bulk values") return sql.rstrip(", ") def process_value_string(self): @@ -241,6 +250,7 @@ def _compile_key_value_equals(self, qmark=False): Returns: self """ + print("compile key values") sql = "" for update in self._updates: @@ -273,7 +283,7 @@ def _compile_key_value_equals(self, qmark=False): self._bindings += (value,) sql = sql.rstrip(", ") - + print("compiled key values") return sql def process_aggregates(self): @@ -587,7 +597,7 @@ def add_binding(self, binding): Arguments: binding {string} -- A value to bind. """ - self._bindings += (binding,) + self._bindings.append(binding) def column_exists(self, column): """Check if a column exists diff --git a/tests/mssql/grammar/test_mssql_qmark.py b/tests/mssql/grammar/test_mssql_qmark.py index c5bf0af1..131c5fb7 100644 --- a/tests/mssql/grammar/test_mssql_qmark.py +++ b/tests/mssql/grammar/test_mssql_qmark.py @@ -13,25 +13,25 @@ def test_can_compile_select(self): sql = "SELECT [users].[username] FROM [users] WHERE [users].[name] = '?'" self.assertEqual(mark.to_qmark(), sql) - self.assertEqual(mark._bindings, ("Joe",)) + self.assertEqual(mark._bindings, ["Joe"]) def test_can_compile_update(self): mark = self.builder.update({"name": "Bob"}, dry=True).where("name", "Joe") sql = "UPDATE [users] SET [users].[name] = '?' WHERE [users].[name] = '?'" self.assertEqual(mark.to_qmark(), sql) - self.assertEqual(mark._bindings, ("Bob", "Joe")) + self.assertEqual(mark._bindings, ["Bob", "Joe"]) def test_can_compile_insert(self): mark = self.builder.create({"name": "Bob"}, query=True) sql = "INSERT INTO [users] ([users].[name]) VALUES ('?')" self.assertEqual(mark.to_qmark(), sql) - self.assertEqual(mark._bindings, ("Bob",)) + self.assertEqual(mark._bindings, ["Bob"]) def test_can_compile_where_in(self): mark = self.builder.where_in("id", [1, 2, 3]) sql = "SELECT * FROM [users] WHERE [users].[id] IN ('?', '?', '?')" self.assertEqual(mark.to_qmark(), sql) - self.assertEqual(mark._bindings, ("1", "2", "3")) + self.assertEqual(mark._bindings, ["1", "2", "3"]) diff --git a/tests/mysql/grammar/test_mysql_qmark.py b/tests/mysql/grammar/test_mysql_qmark.py index 0b80e047..d79c4bf7 100644 --- a/tests/mysql/grammar/test_mysql_qmark.py +++ b/tests/mysql/grammar/test_mysql_qmark.py @@ -52,7 +52,7 @@ def test_can_compile_where_not_null(self): self, inspect.currentframe().f_code.co_name.replace("test_", "") )() self.assertEqual(mark.to_qmark(), sql) - self.assertEqual(mark._bindings, bindings) + self.assertEqual(mark._bindings, []) # def test_can_create_with_falsy_values(self): # mark = self.builder.create( @@ -80,14 +80,14 @@ def can_compile_select(self): """ return ( "SELECT `users`.`username` FROM `users` WHERE `users`.`name` = '?'", - ("Joe",), + ["Joe"], ) def can_compile_delete(self): """ self.builder.where('name', 'Joe').delete() """ - return "DELETE FROM `users` WHERE `users`.`name` = '?'", ("Joe",) + return "DELETE FROM `users` WHERE `users`.`name` = '?'", ["Joe"] def can_compile_update(self): """ @@ -97,7 +97,7 @@ def can_compile_update(self): """ return ( "UPDATE `users` SET `users`.`name` = '?' WHERE `users`.`name` = '?'", - ("Bob", "Joe"), + ["Bob", "Joe"], ) def can_compile_where_in(self): @@ -106,7 +106,7 @@ def can_compile_where_in(self): """ return ( "SELECT * FROM `users` WHERE `users`.`id` IN ('?', '?', '?')", - ("1", "2", "3"), + ["1", "2", "3"], ) def can_compile_where_not_null(self): From 07d1e8eaa8e328d43d5bb58b9df6c09e3fbf32de Mon Sep 17 00:00:00 2001 From: Joe Mancuso Date: Sat, 30 Jan 2021 09:41:37 -0500 Subject: [PATCH 2/2] refactor --- src/masoniteorm/query/grammars/BaseGrammar.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/masoniteorm/query/grammars/BaseGrammar.py b/src/masoniteorm/query/grammars/BaseGrammar.py index 8aee69ce..b92d34a3 100644 --- a/src/masoniteorm/query/grammars/BaseGrammar.py +++ b/src/masoniteorm/query/grammars/BaseGrammar.py @@ -129,30 +129,22 @@ def _compile_bulk_create(self, qmark=False): Returns: self """ - print("first get all values") all_values = [list(x.values()) for x in self._columns] - print("all values got") - print("compile sql") self._sql = self.bulk_insert_format().format( key_equals=self._compile_key_value_equals(qmark=qmark), table=self.process_table(self.table), columns=self.columnize_bulk_columns(list(self._columns[0].keys())), values=self.columnize_bulk_values(all_values, qmark=qmark), ) - print("sql compiled") return self def columnize_bulk_columns(self, columns=[]): - print("columnize bulk column") - s = ", ".join( + return ", ".join( self.column_string().format(column=x, separator="") for x in columns ).rstrip(",") - print("columnized bulk columns") - return s def columnize_bulk_values(self, columns=[], qmark=False): - print("columnize bulk values") sql = "" for x in columns: inner = "" @@ -179,7 +171,6 @@ def columnize_bulk_values(self, columns=[], qmark=False): ) ) - print("columnized bulk values") return sql.rstrip(", ") def process_value_string(self): @@ -250,7 +241,6 @@ def _compile_key_value_equals(self, qmark=False): Returns: self """ - print("compile key values") sql = "" for update in self._updates: @@ -283,7 +273,6 @@ def _compile_key_value_equals(self, qmark=False): self._bindings += (value,) sql = sql.rstrip(", ") - print("compiled key values") return sql def process_aggregates(self):