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")