Pergunta

Visão geral

Eu estou construindo um site em Django. Eu preciso para permitir que as pessoas a começar a adicionar flatpages, e definir algumas configurações no admin. Essas mudanças devem ser definitivo, uma vez que a informação vem do cliente. No entanto, eu também estou desenvolvendo a infra-estrutura, e como tal vontade estou criando e migrar tabelas. I empurrar estas alterações para o cubo.

Ferramentas

django

git

sul

postgres

Problema

Como posso garantir que eu recebo as mudanças de banco de dados do site on-line para baixo para me no meu lappy, e também como eu posso empurrar o meu banco de dados muda-se para o site ao vivo, para que possamos ter um mínimo de coordenação necessária ? Estou familiarizado com ganchos git, então essa opção está em jogo.

Adenda:

Eu acho que eu sei que as tabelas podem ser modificados através do administrador. Não deve haver muita sobreposição realmente. Como eu considero ainda mais, o perigo é realmente me empurrando dados que substituirão algo que fizeram.

Graças.

Foi útil?

Solução

Para obter o esquema muda-se para o servidor, basta usar Sul cuidado. Se você modificar qualquer mesa que pode ter dados em, certifique-se de escrever tanto uma migração do esquema e, se necessário migração de dados de um para preservar o senso de seus dados.

Para obter os seus dados atualizados de volta para você (o que não parece crítico, mas pode ser bom para o trabalho com dados de teste up-to-date como você está desenvolvendo), eu geralmente apenas usar luminárias Django eo dumpdata e comandos loaddata. É fácil o suficiente para despejar um dispositivo elétrico e comprometer-lo ao seu repo, então um loaddata em sua extremidade.

Você pode tentar usar ganchos git para automatizar alguns dos isso, mas se você quiser automação Eu recomendo tentar algo como tela pelo contrário. que grande parte deste material não precisa ser executado a cada vez que você empurrar / puxar (em particular, eu normalmente não gostaria de despejar um novo equipamento de dados que frequentemente).

Outras dicas

Você provavelmente deve dar uma olhada do Sul:

http://south.aeracode.org/

Parece-me que você provavelmente poderia criar um gancho git que desencadeia Sul se você estiver fazendo algum tipo de sistema de integração contínua.

Caso contrário, cada vez que você fazer um push você terá que executar manualmente as etapas de migração si mesmo. Não se esqueça de colocar-se a mensagem "site está em manutenção". ;)

Eu recomendo que você use mk-table-sync para puxar mudanças a partir de servidor ao vivo para seu laptop. mk-table-sync tem um monte de parâmetros que você pode automatizar esse processo usando tecido . Você seria basicamente criar uma função de tecido que executa mk-table-sync em cada tablet que você quer puxar a partir do servidor.

Isto significa que você não pode fazer dabatase muda mesmo, porque eles serão substituídos pela força.

As únicas mudanças que você estaria fazendo para o banco de dados ao vivo estiver usando Sul. Você iria empurrar o código para o servidor e, em seguida, executar o migrar para atualizar o esquema de banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top