Jango.db.utils.ProgrammingError: отношение <имя_отношения> уже существует
Я начинаю проект, который основан на некоторых уже существующих реляционных данных. Одна из проблем заключается в том, что данные не в той форме, в которой я хотел бы их получить. Например, boolean
поля являются целыми числами и т.д.
По моему мнению, для начала моего проекта было бы неплохо сделать следующее:
- Загрузите данные в предоставленной форме (.csv). .
- Создайте базу данных из данных csv, используя pandas
dataframe.to_sql method
. - Создайте приложение django и загрузите модели из базы данных в
models.py
, используяmanage.py inspectdb
. - Измените все поля на те, которые я хочу, и удалите
managed = False
в каждомclass Meta
подклассе моего класса models. - Вот и все. Теперь мой проект превратится в обычный проект, как и все остальные. Он будет хранить данные из таблиц, но позволит мне изменять схему, как я захочу (*). .
То, что я использовал метод dataframe.to_sql
, сделало форму данных еще более проблематичной, например, есть не внешние ключи, а просто varchars
или integers
. Поэтому мне пришлось вручную преобразовать эти поля в ForeignKeys
.
Проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я пытаюсь применить миграции, я получаю эту ошибку:
django.db.utils.ProgrammingError: relation <relation_name> already exists
Я также попробовал применить миграции без внесения изменений в какое-либо поле (как это было с inspectdb
, только с удалением managed=False
), а затем внести изменения. Миграция без изменений была применена без проблем, но следующая миграция с изменениями вызвала ту же ошибку.
Итак, как мне достичь того, что я хочу? Я хочу получить базу данных с существующими данными и преобразовать ее (удалить колонки, добавить колонки, изменить тип данных колонок), как я хочу, используя миграции django.