0

Python sqlite3.OperationalError: таблица не найдена

92

Я пытаюсь сохранить данные о учениках в школе. Ранее я уже создавал несколько таблиц, таких как таблица для паролей и таблица для учителей, которые я затем объединю в одной программе.

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

sqlite3.OperationalError: no such table: PupilPremiumTable

Ошибка возникает на строке:

cursor.execute("select MAX(RecordID) from PupilPremiumTable")

Я заглянул в папку и нашел файл с именем PupilPremiumTable.db, и таблица уже была создана ранее, поэтому я не понимаю, почему это не работает.

Вот часть моего кода. Если нужно больше информации, дайте знать, потому что раньше все работало, и у меня нет понятия о том, что именно не работает:

with sqlite3.connect("PupilPremiumTable.db") as db:
    cursor = db.cursor()
    cursor.execute("select MAX(RecordID) from PupilPremiumTable")
    Value = cursor.fetchone()
    Value = str('.'.join(str(x) for x in Value))
    if Value == "None":
        Value = int(0)
    else:
        Value = int('.'.join(str(x) for x in Value))
    if Value == 'None,':
        Value = 0
    TeacherID = Value + 1
    print("This RecordID is: ",RecordID)

Заранее благодарю за помощь!

5 ответ(ов)

0

Во-первых, вам нужно проверить, существует ли эта таблица в базе данных. Для этого вы можете использовать SQLite viewer: https://inloop.github.io/sqlite-viewer/.

Если таблица существует, тогда вы можете записать название своей таблицы в одинарные кавычки, например:

SELECT * FROM 'TableName'

Какой бы ни был ваш запрос, я просто использую SELECT * в качестве примера.

0

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

Возможно, вы загружаете представления или запросы к базе данных, но не дали достаточно времени Django для применения миграций моделей к базе данных. Именно поэтому возникает ошибка "таблица не существует".

Убедитесь, что вы используете следующую инициализацию в вашем коде представления:

class RegisterForm(forms.Form):

    def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)

Второй подход — это очистить предыдущие миграции, удалить базу данных и начать заново процесс миграции.

0

У меня была такая же проблема, когда я следовал учебнику по Flask. Я инициализировал базу данных один раз, и после этого начал получать ошибку sqlite3.OperationalError. Затем я попробовал инициализировать снова, и оказалось, что у меня было много ошибок в схеме и файле db.py. Я исправил их и инициализировал снова — и всё заработало.

0

Вот перевод в стиле ответа на StackOverflow:

Добавление этого кода помогло мне:

import os.path

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
db_dir = (BASE_DIR + '\\PupilPremiumTable.db')

Обратите внимание, что необходимо использовать \\ перед PupilPremiumTable.db, чтобы код работал правильно.

0

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь