Django: sqlite for dev, mysql for prod?

Pregunta rápida: ¿es una buena idea usar sqlite al desarrollar un proyecto Django y usar MySQL en el servidor de producción?

Recomiendo usar el mismo backend de base de datos en producción que en desarrollo, y en todas las etapas intermedias. Django abstraerá las cosas de la base de datos, pero tener diferentes entornos lo dejará abierto a la horrible internacionalización, los problemas de configuración y las pequeñas inconsistencias desagradables que ni siquiera se mostrarán hasta que las ponga en funcionamiento.

Personalmente, me atendría a mysql, pero nunca empecé con postgres 🙂

En segundo lugar todas las respuestas anteriores, agregando algunas razones explícitas:

  • MySQL emite una excepción de advertencia cuando intenta almacenar una cadena más larga que el ancho del campo; no la obtendrá en SQLite, por lo que no solo su cadena será diferente entre el desarrollo y la producción, sino también el comportamiento del progtwig
  • los errores en ambos backends son diferentes. Recuerdo que una vez probé SQLite for dev y MySQL para producción, pero resultó que descubrí un error en MySQL backend que no estaba presente en SQLite one. Así que presenté un ticket y lo cambié a MySQL para probar 🙂

E incluso puedes intentar competir con SQLite en términos de velocidad, mira mi respuesta para otra pregunta:

¿Aumentar la velocidad para la creación de tablas MySQL en Django?

¿Por qué querrías hacer eso?

  • SQLite no tiene soporte para procedimientos almacenados todavía.
  • SQLite no tiene tipo. Puede terminar con muchos problemas de encasillamiento al ejecutar MySQL.
  • También SQLite no soporta RIGHT todavía.

Utilice la misma base de datos en todos los entornos.

A medida que el ORM intenta abstraer las diferencias entre las bases de datos, siempre habrá ciertas características que se comportan de manera diferente según la base de datos. La portabilidad de la base de datos es un mito completo.

Además, parece bastante insano probar y desarrollar contra rutas de código que nunca utilizará en producción, ¿no es así?

En resumen, no; A menos que quieras duplicar innecesariamente el tiempo de desarrollo.

Simplemente cometí este gran error al comenzar con sqlite y cuando trato de implementarlo en el servidor de producción con mysql, las cosas no funcionaron tan bien como esperaba. Intenté dumpdata / loaddata con varios conmutadores, pero de alguna manera seguí recibiendo errores uno tras otro. Hazte un gran favor y usa la misma db tanto para producción como para desarrollo.