Подтвердить что ты не робот

Django: sqlite для dev, mysql для prod?

Быстрый вопрос: полезно ли использовать sqlite при разработке проекта Django и использовать MySQL на производственном сервере?

4b9b3361

Ответ 1

Я бы настоятельно рекомендовал использовать тот же базовый бэкэнд в производстве, что и в разработке, и на всех этапах между ними. Django будет абстрагировать материал базы данных, но в разных средах вы откроете для себя ужасную интернационализацию, проблемы с конфигурацией и неприятные крошечные несоответствия, которые даже не появятся до тех пор, пока вы не нажмете его в прямом эфире.

Лично я придерживаюсь mysql, но я никогда не встречался с postgres:)

Ответ 2

Зачем вам это нужно?

  • SQLite еще не поддерживает хранимую процедуру.
  • SQLite безличный. При запуске MySQL вы можете столкнуться с множеством проблем с приведением типов.
  • Также SQLite еще не поддерживает RIGHT join.

Ответ 3

Вторые все предыдущие ответы, добавив некоторые явные причины:

  • Проблемы с MySQL Исправлено предупреждение, когда вы пытаетесь сохранить строку дольше, чем ширина поля - вы не получите их в SQLite, поэтому не только строка будет отличаться между dev и production, но и поведение программы
  • ошибки в обоих бэкэндах разные - я помню, что однажды я попробовал SQLite для dev и MySQL для производства, но оказалось, что я обнаружил ошибку в бэкэнд MySQL, которой не было в SQLite. Поэтому я подал ему билет и переключился на MySQL для тестирования: -)

И вы даже можете попытаться конкурировать с SQLite с точки зрения скорости, взгляните на мой ответ на другой вопрос:

Увеличьте скорость создания таблицы MySQL в Django?

Ответ 4

Использовать одну и ту же базу данных во всех средах.

Насколько ORM пытается абстрагировать различия между базами данных, всегда будут определенные функции, которые ведут себя по-разному на основе базы данных. Переносимость базы данных - это полный миф.

Кроме того, кажется сумасшедшим, чтобы протестировать и разработать против кодовых путей, которые вы никогда не будете использовать в процессе производства, не так ли?

Ответ 5

Короче говоря, нет; если вы не хотите излишне удвоить время разработки.

Ответ 6

Просто я сделал эту большую ошибку, начиная с sqlite, и когда я пытаюсь развернуть на сервере производства с помощью mysql, все не так гладко, как я ожидал. Я пробовал dumpdata/loaddata с различными коммутаторами, но почему-то продолжал получать ошибки, возникающие один за другим. Сделайте себе большую услугу и используйте тот же db как для производства, так и для развития.