Handle database locking errors.
This commit is contained in:
parent
5ba5ceef49
commit
e12d130aa6
18
MosDb.py
18
MosDb.py
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user