Быстрый вопрос: стоит ли использовать sqlite при разработке проекта Django и использовать MySQL на рабочем сервере?
Джанго: sqlite для разработчиков, mysql для производства?
Ответы (6)
Я настоятельно рекомендую использовать один и тот же сервер базы данных в производстве, что и при разработке, и на всех промежуточных этапах. Django абстрагирует материал базы данных, но наличие разных сред оставит вас открытыми для ужасной интернационализации, проблем с конфигурацией и неприятных крошечных несоответствий, которые даже не проявятся, пока вы не запустите их.
Лично я бы придерживался mysql, но никогда не ладил с postgres :)
Я поддерживаю все предыдущие ответы, добавляя некоторые явные причины:
- MySQL выдает предупреждение об исключении, когда вы пытаетесь сохранить строку длиннее, чем ширина поля - вы не получите их в SQLite, поэтому не только ваша строка будет отличаться между dev и production, но и поведение программы
- баги в обоих бэкендах разные — помню, как однажды попробовал SQLite для dev и MySQL для продакшена, но оказалось, что я обнаружил баг в бэкенде MySQL, которого не было в SQLite. Так что я подал заявку на это и переключился на MySQL для тестирования :-)
И вы даже можете попытаться конкурировать с SQLite по скорости, посмотрите мой ответ на другой вопрос:
Увеличить скорость создания таблиц MySQL в Django?
Почему вы хотите это сделать?
- В SQLite пока нет поддержки хранимых процедур.
- SQLite бестиповый. Вы можете столкнуться с множеством проблем с приведением типов при запуске MySQL.
- Также SQLite еще не поддерживает RIGHT join.
Используйте одну и ту же базу данных во всех средах.
Как бы ORM ни пытался абстрагироваться от различий между базами данных, всегда будут определенные функции, которые ведут себя по-разному в зависимости от базы данных. Переносимость базы данных — это полный миф.
Кроме того, кажется довольно безумным тестировать и разрабатывать пути кода, которые вы никогда не будете использовать в рабочей среде, не так ли?
Короче говоря, нет; если вы не хотите излишне удваивать время разработки.
Только что сделал эту серьезную ошибку, начиная с sqlite, и когда я пытаюсь развернуть на рабочем сервере с mysql, все работает не так гладко, как я ожидал. Я пробовал dumpdata/loaddata с различными переключателями, но почему-то продолжал получать ошибки одну за другой. Сделайте себе большую услугу и используйте одну и ту же базу данных как для производства, так и для разработки.