Ошибка базы данных 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 =, а не к рабочему каталогу.

Вернуться на верх