Объекты SQLAlchemy не распознают новые столбцы после изменения схемы БД

#python #orm #sqlalchemy #flask-sqlalchemy #sqlalchemy-migrate

#python #orm #sqlalchemy #flask-sqlalchemy #sqlalchemy-миграция

Вопрос:

У меня настроена локальная БД, для которой я создаю объектно-реляционное сопоставление с объектами SQLAlchemy.

Все было хорошо, пока я не изменил схему БД, включая добавление нового столбца в одну из таблиц. Теперь я продолжаю видеть:

sqlalchemy.exc.NoReferencedColumnError: не удалось инициализировать целевой столбец для ForeignKey ‘ModelFit.id ‘ в таблице ‘ModelPrice’: в таблице ‘ModelFit’ нет столбца с именем ‘id’

где ‘id’ — это объект столбца SQLAlchemy столбца «Id» таблицы ModelFit.

Прямые SQL-запросы к новой БД выполняются нормально, единственная проблема заключается в инициализации этого сопоставления.

Я видел аналогичный вопрос от кого-то, кто сказал, что они поняли это, «удалив файл .db из проекта и запустив его снова», но у меня нет такого файла. Я даже не использую flask или что-то еще для создания БД, делал это прямо в локальной БД с использованием SQL.

Любая помощь или понимание того, что здесь происходит? Или было бы полезно получить дополнительную информацию?

Комментарии:

1. Вы обновили свою модель, чтобы она соответствовала таблице?

Ответ №1:

В конце концов, я это понял — похоже, порядок столбцов должен был быть одинаковым. Запуск ALTER TABLE в схеме для добавления столбца «Id» добавил его вправо. В моем классе SQLAlchemy первым был указан столбец «id».

Я не могу подтвердить причину, потому что я не просматривал ту часть документов, которая подтверждала бы это, но, как ни странно, это было так.

Поэтому в основном пришлось удалить таблицу и переделать ее в желаемом порядке.