Ошибка базы данных SQLITE "sqlite3.OperationalError: no such table: table"
Я запутался... У меня есть файл "calculation.py", который содержит следующий код:
conn = sqlite3.connect('matchprediction.db')
c = conn.cursor()
c.execute("SELECT * FROM spielplan WHERE table = 8")
Кроме того, я запускаю этот файл через локальный хост в django, чтобы имитировать веб-сервер.
Когда я запускаю сервер с помощью python manage.py runserver, я получаю сообщение об ошибке:
sqlite3.OperationalError: no such table: table
База данных определенно существует, и сама таблица тоже. Проверил ее с помощью DB Browser. calculations.py работает, так как он извлекает данные из этой таблицы для выполнения расчета. Результат вывода в окне выполнения правильный.
Что я делаю неправильно и как я могу это исправить?
У меня есть два файла matchprediction.db. Один в папке project (пустой), а другой в папке app (содержит таблицу и ее содержимое).
Пустой в папке проекта был создан в результате того, что сервер Django был запущен с папкой проекта в качестве рабочего каталога и вы вызвали sqlite3.connect()
с относительным путем.
Если вы запустили (или уже запустили) app/calculation.py
в командной строке, рабочим каталогом для этого скрипта будет app/
.
Если вы хотите сделать это более пуленепробиваемым, вы можете сформировать истинный путь к базе данных с помощью
import os
database_path = os.path.join(os.path.dirname(__file__), 'matchprediction.db')
conn = sqlite3.connect(database_path)
- т.е. всегда привязывать matchprediction.db
к пути модуля, в котором есть эта строка database_path =
, а не к рабочему каталогу.