воскресенье, 5 мая 2013 г.

Django и fixtures

Раньше я для разработки использовал базу данных sqlite3. И это было ошибкой, т.к.
1. в продакшене я применял другую базу данных - MySQL
2. возможности sqlite3 слишком ограничены, что не позволяло мне использовать south в своих разработках.

Теперь я по совету западных разработчиков использую в своих проектах PostgreSQL.
Кстати, я был привязан к sqlite потому, что это удобно сохранить данные разрабатываемого сайта в одном файлике mysite.sqlite3, потом скинуть папку с проектом на другой компьютер, запустить там manage.py runserver и... вуаля - сайт работает!
Но оказывается в django есть возможность сделать так, чтобы данные автоматически вставлялись в базу данных при syncdb проекта.
Для этого существуют fixtures - представления данных ваших приложений в форматах .json/.xml/.yaml

Дамп базы данных в файл фикстур

python manage.py dumpdata --format=json myapp > myapp/fixtures/initial_data.json

По умолчанию фикстуры нужно хранить в папке fixtures, которую нужно создать внутри каждого приложения.
Если фикстуры сохраняются в файл с названием initial_data, то при каждом syncdb фикстуры будут загружаться в базу данных вашего проекта.

Загрузка фикстуры из файла

python manage.py loaddata myapp/fixtures/myfix.json

Здесь мы вручную загружаем в базу данных приложения myapp данные, сохраненные в файле myfix.json

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

Отправить комментарий