diff --git a/src/Model/Study.py b/src/Model/Study.py index 331a32c2e981328e9f5d1ef0e307832e70aec8b6..e9ccdb41b2527e1c5ba6b6e6929e4d5f3b2031be 100644 --- a/src/Model/Study.py +++ b/src/Model/Study.py @@ -177,6 +177,13 @@ class Study(SQLModel): # SQL # ####### + def _db_insert_into_info(self, key, value, commit=False): + self.execute( + "INSERT INTO info VALUES " + + f"('{key}', '{self._db_format(value)}')", + commit=commit + ) + def _create(self): # Info (metadata) self.execute( diff --git a/src/tools.py b/src/tools.py index d3c2ddcc266086e3434c55da7158f11773f949b4..1b7784399cf0f3257cf5d6257990aa91acf4380b 100644 --- a/src/tools.py +++ b/src/tools.py @@ -312,20 +312,30 @@ class SQL(object): def _db_format(self, value): # Replace ''' by ''' to preserve SQL injection - if value is str: + if type(value) is str: value = value.replace("'", "'") return value @timer def execute(self, cmd, fetch_one=True, commit=False): logger.debug(f"SQL - {cmd}") - res = self._cur.execute(cmd) - if commit: - self._db.commit() + value = None + try: + res = self._cur.execute(cmd) - value = self._fetch(res, fetch_one) - return value + if commit: + self._db.commit() + + value = self._fetch(res, fetch_one) + except Exception as e: + logger.error( + f"[{Fore.RED}ERROR{Style.RESET_ALL}] " + + f"{Fore.RED}{e}{Style.RESET_ALL}" + ) + traceback.print_exc() + finally: + return value def _create(self): logger.warning("TODO: Create")