diff --git a/src/Db/Db.py b/src/Db/Db.py index 63cbe407..ae79293b 100644 --- a/src/Db/Db.py +++ b/src/Db/Db.py @@ -68,6 +68,7 @@ class Db(object): self.cur = None self.progress_sleeping = False self.log = logging.getLogger("Db:%s" % schema["db_name"]) + self.commiting = False self.table_names = None self.collect_stats = False self.foreign_keys = False @@ -125,6 +126,7 @@ class Db(object): try: s = time.time() + self.commiting = True self.conn.commit() self.log.debug("Commited in %.3fs (reason: %s)" % (time.time() - s, reason)) return True @@ -134,6 +136,8 @@ class Db(object): else: self.log.error("Commit error: %s (reason: %s)" % (Debug.formatException(err), reason)) return False + finally: + self.commiting = False def insertOrUpdate(self, *args, **kwargs): if not self.conn: diff --git a/src/Db/DbCursor.py b/src/Db/DbCursor.py index 6cf16e04..c8bf29a4 100644 --- a/src/Db/DbCursor.py +++ b/src/Db/DbCursor.py @@ -88,7 +88,7 @@ class DbCursor: if query.upper().strip("; ") == "VACUUM": self.db.commit("vacuum called") query = query.strip() - while self.db.progress_sleeping: + while self.db.progress_sleeping or self.db.commiting: time.sleep(0.1) self.db.last_query_time = time.time() @@ -133,7 +133,7 @@ class DbCursor: return res def executemany(self, query, params): - while self.db.progress_sleeping: + while self.db.progress_sleeping or self.db.commiting: time.sleep(0.1) self.db.last_query_time = time.time()