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