2011-08-09 4 views
13

Я разработал простое приложение django с использованием sqlite3. Сначала я хотел сохранить его простым, используя sqlite3, но все начинает расширяться (да, я действительно начал использовать это приложение с sqlite3! Позор мне ...), поэтому я хочу перенести все свои данные в базу данных postgresql.Как скопировать базу данных в другую в django?

ли Джанго или другой третьей стороной предоставить такую ​​возможность, или я должен страдать из-за моей собственной глупости ...

+0

Возможный дубликат: http://stackoverflow.com/questions/4581727/convert-sqlite-sql-dump-file-to-postgresql –

ответ

2

Я пытаюсь сделать то же точную вещь прямо сейчас, но я Я столкнулся с проблемой с разрешающими зависимостями в основном так же, как и ticket 16317. Но достаточно обо мне ...

Устранение неполадок привело к тому, что я нашел ссылку для django-smuggler, которая позволяет создавать дампы и загружать данные из интерфейса администратора.

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

25

Во-первых, выполнить

manage.py dumpdata > out.json 

затем измените DB конфигурации, перенос (или SyncDB) и, наконец,

echo "delete from auth_permission; delete from django_content_type;" | python manage.py dbshell 

(Если у вас есть Django старше 1.11, вам нужно использовать

echo "delete from django_content_type;" | manage.py dbshell 

)

Затем загрузите файл в формате JSON:

manage.py loaddata out.json 

(в 2013 django_contenttype заменяется django_content_type)

+0

Я получаю сообщение об ошибке, как это: Integrity Ошибка: дублирование ключа нарушает ограничение уникальности " django_content_type_app_label_model_key " ДЕТАЛИ: KEY (app_label, model) = (admin, logentry) уже существует – yasar

+1

Вы изменили db? Когда вы удаляете свои данные, вы можете просто удалить таблицы, которые у вас есть, обновить схему, запустить syncdb (таблицы будут воссозданы) и данные загрузки снова (помните, удалили ли вы некоторые столбцы из схемы, вам нужно удалить их из json-файла слишком). Вы можете увидеть таблицы и запросы, необходимые для сброса приложения, когда вы запустили «manage.py sqlreset appname». А также, --indent = 4 поможет с командой dumpdata;) –

+0

btw - http://stackoverflow.com/questions/5739880/django-update-database-schema-without-loosing-data может быть полезно .. –

Смежные вопросы