Don't execute query while commiting

This commit is contained in:
shortcutme 2019-11-30 02:11:11 +01:00
parent 594edc6e9a
commit 12bfad8fe6
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE
2 changed files with 6 additions and 2 deletions

View file

@ -68,6 +68,7 @@ class Db(object):
self.cur = None self.cur = None
self.progress_sleeping = False self.progress_sleeping = False
self.log = logging.getLogger("Db:%s" % schema["db_name"]) self.log = logging.getLogger("Db:%s" % schema["db_name"])
self.commiting = False
self.table_names = None self.table_names = None
self.collect_stats = False self.collect_stats = False
self.foreign_keys = False self.foreign_keys = False
@ -125,6 +126,7 @@ class Db(object):
try: try:
s = time.time() s = time.time()
self.commiting = True
self.conn.commit() self.conn.commit()
self.log.debug("Commited in %.3fs (reason: %s)" % (time.time() - s, reason)) self.log.debug("Commited in %.3fs (reason: %s)" % (time.time() - s, reason))
return True return True
@ -134,6 +136,8 @@ class Db(object):
else: else:
self.log.error("Commit error: %s (reason: %s)" % (Debug.formatException(err), reason)) self.log.error("Commit error: %s (reason: %s)" % (Debug.formatException(err), reason))
return False return False
finally:
self.commiting = False
def insertOrUpdate(self, *args, **kwargs): def insertOrUpdate(self, *args, **kwargs):
if not self.conn: if not self.conn:

View file

@ -88,7 +88,7 @@ class DbCursor:
if query.upper().strip("; ") == "VACUUM": if query.upper().strip("; ") == "VACUUM":
self.db.commit("vacuum called") self.db.commit("vacuum called")
query = query.strip() query = query.strip()
while self.db.progress_sleeping: while self.db.progress_sleeping or self.db.commiting:
time.sleep(0.1) time.sleep(0.1)
self.db.last_query_time = time.time() self.db.last_query_time = time.time()
@ -133,7 +133,7 @@ class DbCursor:
return res return res
def executemany(self, query, params): def executemany(self, query, params):
while self.db.progress_sleeping: while self.db.progress_sleeping or self.db.commiting:
time.sleep(0.1) time.sleep(0.1)
self.db.last_query_time = time.time() self.db.last_query_time = time.time()