Возникла исключительная ситуация типа OperationalError. Аргументы: ('база данных заблокирована',); SQlite - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь написать функцию для обновления столбцов таблицы базы данных (здесь имя столбца будет отличаться в разные моменты времени.) Поэтому при этом я получаю «Ошибка операции, База данных заблокирована». Кто-нибудь может предложить причину этого. Для более подробной информации я предоставляю код как показано ниже:

def UpdateDB_ForFields(DB_name, DB_tableName, dev_name, devindex, colList, colValList): 
    try:
        conn = None
        cloudDBlockList[devindex].acquire()
        pool_sema.acquire()
        conn = sqlite3.connect("XYZ.db",timeout=20)
        for i in range(len(colList)):
            cursor = conn.execute("""UPDATE XYZ_settings SET {0} = ? WHERE {1} = ?;""".format(colList[i],"devName"),(colValList[i],dev_name))           
        conn.commit()
        conn.close()
        pool_sema.release()
        cloudDBlockList[devindex].release()
    except Exception as ex:
        template = "An exception of type {0} occurred. Arguments:\n{1!r}"
        message = template.format(type(ex).__name__, ex.args)
        print(message)
        logging.error(message)
        if conn == None:
            print("Error")
        else:
            conn.close()
            pool_sema.release()
            cloudDBlockList[devindex].release()

I am getting error while updating db as database locked. Please suggest the solution.
...