Выдает ошибку sqlite3.OperationalError: unable to open database file

Рейтинг: 1Ответов: 2Опубликовано: 14.02.2023

Сделал программу которая работает с базой данных, использую sqlite3.

Упаковываю эту программу в экзешник, при запуске напрямую через этот экзешник все корректно работает, но мне понадобилось запускать мою программу не напрямую а через сторонний файл, в данном случае через json файл.

Через этот файл я получаю нужную мне информацию, запускаю программу способом: правой кнопкой на json файл -> открыть с помощью -> указываю свою программу. Для этого в программе я использую такой код:

if __name__ == '__main__':

    with sqlite3.connect("./data_bases/data.db") as db:
        cursor = db.cursor()

        if len(sys.argv) > 1:
            file = sys.argv[1]
            print(sys.argv)
            with open(f"{file}", "r") as out_file:
                data = json.load(out_file)
                app = QtWidgets.QApplication(sys.argv)
                otherWindow_3(data)
                sys.exit(app.exec())
        else:
            katalog()

Ну и при попытке открыть через этот json файл, выдает ошибку:

sqlite3.OperationalError: unable to open database file

Пробовал менять путь к базе данных, писал полный путь, не помогло. Пробовал саму базу данных перенести в другую папку, думал что нет доступа к папке где находится база, не помогло.

Ответы

▲ 0Принят

По пробуйте задать полный путь к файлу в формате который я укажу:

with sqlite3.connect("C:\\users\\user\\data_bases\\data.db") as db:

Только укажите свой полный путь

▲ 1

В общем проблема решилась. Изначально проблема действительно была в неправильном указании пути к БД, но потом я исправил эту ошибку, записал полный путь. Но ошибка не пропадала. Ошибка была в том, что я создал экзешник с таким же именем, но пути у них были разные и когда я пытался открыть файл методом: правой кнопкой на json файл -> открыть с помощью -> указываю свою новую упакованную в exe программу, то этот файл открывался не через мою новую программу, а через старую с тем же именем, хотя путь у нее другой. Не знаю с чем это связано, но так видимо работает Windows.