From 9fdb73106d49c796b3714a5110325d7299221458 Mon Sep 17 00:00:00 2001 From: ArnAud Date: Thu, 19 Nov 2015 12:05:04 +0100 Subject: [PATCH] SQL: do queries in one function --- DataSource/MySQL/MySQL.py | 11 +++++++++++ leobject/datasources/ledatasourcesql.py | 22 ++++++++-------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/DataSource/MySQL/MySQL.py b/DataSource/MySQL/MySQL.py index 556fa9c..4adaeed 100644 --- a/DataSource/MySQL/MySQL.py +++ b/DataSource/MySQL/MySQL.py @@ -18,6 +18,17 @@ class MySQL(object): ## @brief Lodel_id for the hierachy root leroot_lodel_id = 0 + @staticmethod + ## @brief Exec a query + # @param query str : SQL query + def query(connection, query): + with connection as cur: + try: + cur.execute(query) + except Exception as err: + raise err + return cur + @classmethod ## @brief gets the table name from class name # @param class_name str diff --git a/leobject/datasources/ledatasourcesql.py b/leobject/datasources/ledatasourcesql.py index 7f34c5b..2e83fb1 100644 --- a/leobject/datasources/ledatasourcesql.py +++ b/leobject/datasources/ledatasourcesql.py @@ -46,19 +46,14 @@ class LeDataSourceSQL(DummyDatasource): return res if len(res)>1 else res[0] elif isinstance(datas, dict): - with self.connection as cur: - object_datas = {'class_id': leclass._class_id, 'type_id': letype._type_id} - if cur.execute(insert(self.datasource_utils.objects_table_name, object_datas)) != 1: - raise RuntimeError('SQL error') + object_datas = {'class_id': leclass._class_id, 'type_id': letype._type_id} - lodel_id = cur.lastrowid + cur = self.datasource_utils.query(self.connection, insert(self.datasource_utils.objects_table_name, object_datas)) + lodel_id = cur.lastrowid - datas[self.datasource_utils.field_lodel_id] = lodel_id - query_table_name = self.datasource_utils.get_table_name_from_class(leclass.__name__) - query = insert(query_table_name, datas) - - if cur.execute(query) != 1: - raise RuntimeError('SQL error') + datas[self.datasource_utils.field_lodel_id] = lodel_id + query_table_name = self.datasource_utils.get_table_name_from_class(leclass.__name__) + self.datasource_utils.query(self.connection, insert(query_table_name, datas)) return lodel_id @@ -95,9 +90,8 @@ class LeDataSourceSQL(DummyDatasource): query = select(query_table_name, where=where_filters, select=field_list) # Executing the query - with self.connection as cur: - cur.execute(query) - results = all_to_dicts(cur) + cur = self.datasource_utils.query(self.connection, query) + results = all_to_dicts(cur) return results