Commit e86b5551 authored by Antonin Dvorak's avatar Antonin Dvorak
Browse files

final fix for sqlite3 wrapper

parent 9775b809
......@@ -5,9 +5,7 @@ def modify_db(conn,
query,
*args):
"""Wrapper for modifications (INSERT, UPDATE, DELETE or REPLACE) of Sqlite3 database.
Executes given query and commits it - in case of lock it retries the commit
Params
------
connection: sqlite3 connection
......@@ -17,31 +15,39 @@ def modify_db(conn,
args: array
additional arguments for execute query, optional
"""
upperbound = 11
with conn:
c = conn.cursor()
for x in range(1, 11):
# retry db execute
for x in range(1, upperbound):
try:
if args:
c.execute(query, args)
c.execute(query, *args)
else:
c.execute(query)
except:
print("Sqlite3 execute unsuccessful, retrying after %s sec...." %x)
except Exception as e:
print("Sqlite3 execute unsuccessful, reason: \"%s\" \nRetrying after %s sec...." % (str(e), x))
time.sleep(x)
pass
else:
print("Sqlite3 execute successful, breaking the retry cycle.")
break
# max attempts achieved, quit
if x == upperbound - 1:
raise Exception("Sqlite3 - achieved max retries to execute with no success, giving up...")
# retry commit - db might be locked by different process
for x in range(1, 11):
# retry db commit
for x in range(1, upperbound):
try:
conn.commit()
except:
print("Sqlite3 commit unsuccessful, retrying after %s sec...." %x)
except Exception as e:
print("Sqlite3 commit unsuccessful, reason: \"%s\" \nRetrying after %s sec...." % (str(e), x))
time.sleep(x)
pass
else:
print("Sqlite3 commit successful, breaking the retry cycle.")
break
# max attempts achieved, quit
if x == upperbound - 1:
raise Exception("Sqlite3 - achieved max retries to commit with no success, giving up...")
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment