ORM python

votos
2

Esta é uma pergunta teoria novato - Eu estou apenas começando a usar Python e olhando para Django e ORM. Pergunta: Se eu desenvolver meus objetos e através do desenvolvimento adicional modificar a estruturas de objetos base, herança, etc. - seria solução ORM do Django modificar o banco de dados automaticamente ou que eu preciso para realizar uma conversão (se o aplicativo é ao vivo)?

Então, eu começo com uma pessoa básica aplicativo Telefone Objeto: nome, endereço, cidade, estado, CEP, telefone e eu mudar para objeto pessoa: Telefone Objeto título, nome, endereço, cidade, estado, CEP, objeto telefone: tipo, telefone #

Faço para converter manualmente através do db e alterar o código ou será que o middleware ORM fazer a mudança? e se assim for - como?

Publicado 19/05/2009 em 22:41
fonte usuário
Em outras línguas...                            


3 respostas

votos
5

A partir de Django 1.02 (e como da última corrida para 1,1 na subversão), não há "a migração do esquema" automática. Suas escolhas são para eliminar o esquema e ter Django recriá-lo (via syncdb manage.py), ou alterar o esquema por entregar-se.

Existem algumas ferramentas no horizonte para a migração do esquema Django. (Eu estou assistindo Sul ).

Respondeu 20/05/2009 em 00:19
fonte usuário

votos
4

O livro Django cobre esse problema no capítulo 5 , perto do final do capítulo (ou inferior da página, na edição de web). Basicamente, as regras são:

  • Quando a adição de um campo, primeiro adicioná-lo ao banco de dados manualmente (usando, por exemplo, ALTER TABLE) e, em seguida, adicione o campo ao modelo. (Você pode usar manage.py sqlallpara ver o que instrução SQL para executar.)
  • Ao remover um campo, removê-lo do modelo e, em seguida, executar a instrução SQL apropriada para remover a coluna (por exemplo, um ALTER TABLEcomando), e qualquer unir tabelas que foram criadas.
  • Mudar o nome de um campo é basicamente uma combinação de adição / remoção de campos, bem como os dados de cópia.

Então, para responder sua pergunta, no caso de Django, não, o ORM vai não lidar com modificações para você - mas eles não são tão difícil de fazer. Veja que o capítulo do livro (ligada acima) para mais informações.

Respondeu 19/05/2009 em 22:50
fonte usuário

votos
0

Nós incluímos um número 'versão' no nome do aplicativo.

Nossos diretórios semelhante a este

project
    settings.py
    appA_1
        __init__.py
        models.py
        tests.py
    appB_1 
        __init__.py
        models.py
        tests.py   
    appB_2
        __init__.py
        models.py
        tests.py

Isso mostra duas versões de AppB. appB_1 foi a versão original. Quando nós mudamos o modelo, que começou copiando o aplicativo crie appB_2, e depois modificado que um.

Um manage.py syncdbcriará o novo appB_2 fresco.

Nós temos que descarregar e recarregar as tabelas copiando a partir appB_1 para appB_2. Uma vez.

Então, podemos remover appB_1 do settings.py. Mais tarde podemos excluir as tabelas do banco de dados.

Respondeu 20/05/2009 em 02:05
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more