Джанго: sqlite для разработчиков, mysql для производства?

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


person Jason Miesionczek    schedule 21.02.2010    source источник


Ответы (6)


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

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

person Aquarion    schedule 21.02.2010
comment
Хорошо, рад, что я еще не пошел по этой дороге. возможно, я посмотрю на postgres, поскольку я могу установить его в cygwin. заставить mysql работать там оказалось больше проблем, чем пользы. - person Jason Miesionczek; 21.02.2010
comment
зачем возиться с cygwin, и mysql, и postgres имеют собственные пакеты win32? :) - person Dmitry Shevchenko; 22.02.2010
comment
Я знаю, что это немного поздно, но использование XAMPP с Django было мечтой - для меня это хорошо сочетается. У меня были проблемы с MySQLdb, но я погуглил и нашел скомпилированные библиотеки. Всем привет! :-) - person Frank V; 24.04.2010

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

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

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

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

person Tomasz Zieliński    schedule 21.02.2010
comment
+1 - Отличный вклад. - person Frank V; 24.04.2010

Почему вы хотите это сделать?

  • В SQLite пока нет поддержки хранимых процедур.
  • SQLite бестиповый. Вы можете столкнуться с множеством проблем с приведением типов при запуске MySQL.
  • Также SQLite еще не поддерживает RIGHT join.
person Pentium10    schedule 21.02.2010
comment
Ни один из них не влияет на мои потребности в Django; хотя вы правы. - person analytik; 12.05.2013

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

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

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

person Nevir    schedule 22.02.2012
comment
Переносимость базы данных — это полный миф СПАСИБО! - person Marc; 14.02.2017

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

person Steve    schedule 21.02.2010

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

person shaytac    schedule 02.10.2012