Handle database locking errors.

This commit is contained in:
Markus Birth 2018-11-26 11:57:45 +01:00
parent 5ba5ceef49
commit e12d130aa6

View File

@ -1,4 +1,5 @@
from datetime import datetime
from time import sleep
import sqlite3
class MosDb():
@ -63,6 +64,8 @@ class MosDb():
"""Converts given local time to UTC unix stamp
For SQLite queries, use strftime('%s', '2017-03-08T17:46:52', 'utc')
"""
if datestring is None:
return None
dt = datetime.strptime(datestring, "%Y-%m-%dT%H:%M:%S")
return dt.timestamp()
@ -86,10 +89,17 @@ class MosDb():
fieldsList = ", ".join(fieldsList)
placeHolders = ", ".join(placeHolders)
self.c.execute(
"INSERT OR REPLACE INTO " + table + " (" + fieldsList + ") VALUES (" + placeHolders + ")",
valuesTuple
)
dataWrittenOk = False
while not dataWrittenOk:
try:
self.c.execute(
"INSERT OR REPLACE INTO " + table + " (" + fieldsList + ") VALUES (" + placeHolders + ")",
valuesTuple
)
dataWrittenOk = True
except sqlite3.OperationalError as e:
print("OpErr: {} - retrying.".format(e))
sleep(0.5)
self.changes_made = True
def mark_deleted(self, objData):