Cómo garantizar que los cambios en la base de datos se puedan mover fácilmente a través de DVCS usando django

StackOverflow https://stackoverflow.com/questions/1646074

Pregunta

Descripción general

Estoy construyendo un sitio web en django. Necesito permitir que las personas comiencen a agregar páginas planas y establecer algunas configuraciones en el administrador. Estos cambios deben ser definitivos, ya que esa información proviene del cliente. Sin embargo, también estoy desarrollando el back-end y, como tal, crearé y migraré tablas. Empujo estos cambios al centro.

Herramientas

django

git

sur

postgres

Problema

¿Cómo puedo asegurarme de que recibo los cambios de la base de datos del sitio en línea en mi dispositivo, y también cómo puedo llevar los cambios de mi base de datos al sitio en vivo, para que tengamos un mínimo de coordinación necesaria? ? Estoy familiarizado con git hooks, por lo que esa opción está en juego.

Anexo:

Creo que sé qué tablas se pueden modificar a través del administrador. No debería haber mucha superposición realmente. Como considero más adelante, el peligro realmente es yo empujando datos que sobrescribirían algo que han hecho.

Gracias.

¿Fue útil?

Solución

Para que sus cambios de esquema lleguen al servidor, simplemente use South con cuidado. Si modifica cualquier tabla en la que puedan tener datos, asegúrese de escribir tanto una migración de esquema como, según sea necesario, una migración de datos para preservar el sentido de sus datos.

Para que sus datos actualizados vuelvan a usted (lo que no parece crítico, pero podría ser bueno trabajar con datos de prueba actualizados a medida que los desarrolla), generalmente solo uso los dispositivos Django y los datos de volcado. y comandos loaddata. Es bastante fácil volcar un dispositivo y enviarlo a su repositorio, y luego cargar los datos en su extremo.

Puede intentar usar git hooks para automatizar algo de esto, pero si desea automatización, le recomiendo probar algo como Fabric. No es necesario ejecutar gran parte de este material cada vez que empuja / tira (en particular, generalmente no me gustaría volcar un nuevo dispositivo de datos con tanta frecuencia).

Otros consejos

Probablemente deberías echar un vistazo al Sur:

http://south.aeracode.org/

Me parece que probablemente podría crear un gancho git que se active en el sur si está haciendo algún tipo de sistema de integración continua.

De lo contrario, cada vez que haga un empuje, tendrá que ejecutar manualmente los pasos de migración usted mismo. No olvides poner el "sitio está bajo mantenimiento" mensaje. ;)

Le recomiendo que utilice mk-table-sync para extraiga los cambios del servidor en vivo a su computadora portátil. mk-table-sync toma muchos parámetros para que pueda automatizar este proceso utilizando fabric . Básicamente, crearía una función de estructura que ejecute mk-table-sync en cada tableta que desee extraer del servidor.

Esto significa que usted no puede hacer cambios de dabatase usted mismo, ya que serán sobrescritos por la extracción.

Los únicos cambios que estaría realizando en la base de datos en vivo están utilizando South. Insertaría el código en el servidor y luego ejecutaría migrar para actualizar el esquema de la base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top