Задать вопрос
liveunit
@liveunit

Как портировать данные из *.sql дампа в БД, а потом импортировать в Django?

Добрый день.
Был проект в котором находилось приложение "news" , соответственно в mysql была создана БД с таблицей news_post. На протяжении несколько месяцев все данные накапливались. Мне надо было срочно все эти данные сохранить и я сделал дамп БД.
Потом было добавлено приложение "blog" к уже имеющемся приложению "news", но это все на другом сервере.
Собственно сам вопрос:
Как мне восстановить данные с .sql файла в БД и подхватить их с помощью django, чтобы приложение "news" отображало "старые" данные, а "blog" оставался пустым, пока я не добавлю новые данные?
Я делал:
mysq -u -p example_db < file.sql
но django их не импортирует. Скорее я не понимаю как это делать.
Спасибо.
  • Вопрос задан
  • 1066 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
liveunit
@liveunit Автор вопроса
Решил таким образом:
1.Создал пустую бд.
2.Сделал syncdb.
3.А потом сделал mysql -u -p example_db < file.sql.
Django все подхватил, данные добавились в бд.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Mintormo
Надо было делать дамп средствами Джанго, а не MySQL. Для этого есть команда manage.py dumpdata которая делает дамп в форматах JSON/YAML/XML. Можно сделать дамп конкретного приложения и потом использовать его как начальные данные. Этот механизм называется фикстуры.
Почитайте. А вот как SQL перекинуть в JSON, YAML или XML... Там надо не просто перекинуть, а с определенной структурой чтобы Джанго это подхватил. Первая мысль (скорее всего неудачная) - создать временную базу и закинуть туда данные из SQL-дампа. Потом написать скриптик на питоне, который создаст файл в JSON/YAML/XML формате с правильной структурой беря данные из временной базы. Затем просто загрузить его с помощью manage.py loaddata. Вот такой ужас :)). Наверняка есть варианты попроще, но мне копать лень.
Ответ написан
Комментировать
zelsky
@zelsky
Проверьте модели и поля соответственно.
appname_basefieldname
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы