Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
/.venv
_build/
*.iml
#
#*.db
33 changes: 19 additions & 14 deletions src/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ class DbException(Exception):


class DB:
_lock = threading.Lock()

def __init__(self, dbfile):
"""
Create a connection to sqlite database
Expand All @@ -42,6 +40,7 @@ def __init__(self, dbfile):
:__tableName: table name for jobs
"""
self.__dbfile = dbfile
self._lock = threading.Lock()
try:
log.debug("Database file: %s" % self.__dbfile)
self.__conn = DB.__create_connection(dbfile)
Expand Down Expand Up @@ -71,43 +70,49 @@ def __create_connection(db_file):
def __create_table(self, query):
try:
cursor = self.__conn.cursor()
with cursor:
cursor.execute(query)
cursor.execute(query)
except apsw.Error as err:
log.exception("Database Error: %s" % err)
return 0

@staticmethod
def __log_and_execute(cursor, sql, args):
with DB._lock:
def __log_and_execute(self, cursor, sql, args):
with self._lock:
log.debug("SQL command: " + sql.replace('?', '%s') % args)
cursor.execute(sql, args)

def __insert_or_delete(self, query, params, login=False):
conn = None
try:
if login:
cursor = DB.__create_connection(self.__dbfile).cursor()
conn = DB.__create_connection(self.__dbfile)
cursor = conn.cursor()
else:
cursor = self.__conn.cursor()
with cursor:
DB.__log_and_execute(cursor, query, params)
self.__log_and_execute(cursor, query, params)
return 1
except apsw.Error as err:
log.exception("Database Error: %s" % err)
return 0
finally:
if conn is not None:
conn.close()

def __select(self, query, params, login=False):
conn = None
try:
if login:
cursor = DB.__create_connection(self.__dbfile).cursor()
conn = DB.__create_connection(self.__dbfile)
cursor = conn.cursor()
else:
cursor = self.__conn.cursor()
with cursor:
DB.__log_and_execute(cursor, query, params)
return cursor.fetchall()
self.__log_and_execute(cursor, query, params)
return cursor.fetchall()
except apsw.Error as err:
log.exception("Database Error: %s" % err)
return None
finally:
if conn is not None:
conn.close()

def update_job(self, task_id, type, status, vault, error, login=False):
# this is required as java json convertion fails for None value of error
Expand Down