воскресенье, 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

суббота, 4 мая 2013 г.

PostgreSQL против MySQL

В своих проектах я всегда использовал MySQL и не задумывался, что может быть что-то лучше. Недавно услышал, что есть другая база данных и что она якобы гораздо удобнее. Многие разработчики Django используют в своей работе именно PostgreSQL. Данное видео поможет вам понять - хотите вы использовать MySQL или нет.



После просмотра этого видео я решил перейти на использование в проекте своего сайта http://yesnik.ru базы данных PostgreSQL.