Выдает ошибку sqlite3.OperationalError: unable to open database file
Сделал программу которая работает с базой данных, использую 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
Пробовал менять путь к базе данных, писал полный путь, не помогло. Пробовал саму базу данных перенести в другую папку, думал что нет доступа к папке где находится база, не помогло.
Ответы (2 шт):
По пробуйте задать полный путь к файлу в формате который я укажу:
with sqlite3.connect("C:\\users\\user\\data_bases\\data.db") as db:
Только укажите свой полный путь
В общем проблема решилась. Изначально проблема действительно была в неправильном указании пути к БД, но потом я исправил эту ошибку, записал полный путь. Но ошибка не пропадала. Ошибка была в том, что я создал экзешник с таким же именем, но пути у них были разные и когда я пытался открыть файл методом: правой кнопкой на json файл -> открыть с помощью -> указываю свою новую упакованную в exe программу, то этот файл открывался не через мою новую программу, а через старую с тем же именем, хотя путь у нее другой. Не знаю с чем это связано, но так видимо работает Windows.