From 757f23a43ae00896d5ed32a062d6d496152f0969 Mon Sep 17 00:00:00 2001 From: morpheus65535 Date: Thu, 3 Dec 2020 11:13:42 -0500 Subject: [PATCH] Fix for #1202 --- bazarr/database.py | 8 ++++++++ libs/sqlite3worker.py | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bazarr/database.py b/bazarr/database.py index 9f5b3a2ef..b17ddccc6 100644 --- a/bazarr/database.py +++ b/bazarr/database.py @@ -128,10 +128,18 @@ def db_upgrade(): for column in columnToAdd: try: + # Check if column already exist in table + columns_dict = database.execute('''PRAGMA table_info('{0}')'''.format(column[0])) + columns_names_list = [x['name'] for x in columns_dict] + if column[1] in columns_names_list: + continue + + # Creating the missing column if len(column) == 3: database.execute('''ALTER TABLE {0} ADD COLUMN "{1}" "{2}"'''.format(column[0], column[1], column[2])) else: database.execute('''ALTER TABLE {0} ADD COLUMN "{1}" "{2}" DEFAULT "{3}"'''.format(column[0], column[1], column[2], column[3])) + logging.debug('BAZARR Database upgrade process added column {0} to table {1}.'.format(column[1], column[0])) except: pass diff --git a/libs/sqlite3worker.py b/libs/sqlite3worker.py index 4c9dbe49d..c955066d8 100644 --- a/libs/sqlite3worker.py +++ b/libs/sqlite3worker.py @@ -120,7 +120,7 @@ class Sqlite3Worker(threading.Thread): query: A sql query with ? placeholders for values. values: A tuple of values to replace "?" in query. """ - if query.lower().strip().startswith("select"): + if query.lower().strip().startswith(("select", "pragma")): try: self.sqlite3_cursor.execute(query, values) if only_one: @@ -205,7 +205,7 @@ class Sqlite3Worker(threading.Thread): token = str(uuid.uuid4()) # If it's a select we queue it up with a token to mark the results # into the output queue so we know what results are ours. - if query.lower().strip().startswith(("select", "insert", "update", "delete")): + if query.lower().strip().startswith(("select", "insert", "update", "delete", "pragma")): self.sql_queue.put((token, query, values, only_one, execute_many), timeout=5) return self.query_results(token) else: