Django: Como posso usar minhas classes de modelo para interagir com meu banco de dados de fora Django?

votos
13

Eu gostaria de escrever um script que interage com o meu DB usando modelo de um aplicativo Django. No entanto, eu gostaria de ser capaz de executar este script a partir da linha de comando ou via cron. O que tudo que eu preciso para importar para permitir isso?

Publicado 20/12/2008 em 08:48
fonte usuário
Em outras línguas...                            


3 respostas

votos
15

Você precisa configurar as variáveis ​​de ambiente Django. Estes dizem Python onde o seu projeto é, e que o nome do módulo de configuração é (o nome do projeto no módulo de configuração é opcional):

import os

os.environ['PYTHONPATH'] = '/path/to/myproject'
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

Agora você deve ser capaz de acessar os modelos:

from myproject.models import MyModel

all_my_models = MyModel.objects.all()
Respondeu 20/12/2008 em 09:18
fonte usuário

votos
13

A maneira preferida deve ser a de adicionar um comando personalizado e, em seguida, executá-lo como qualquer outro django-admin(para não ser confundido com django.contrib.admincomando):

./manage.py mycustomcommand --customarg

Definir DJANGO_SETTINGS_MODULE só deve ser usado quando um comando personalizado não é viável.

Respondeu 20/12/2008 em 13:06
fonte usuário

votos
5

Dependendo de suas necessidades específicas, -extensões django-comando pode poupar-lhe um pouco de tempo. Para executar qualquer script como está, sem mexer com variáveis de ambiente basta digitar:

./manage.py runscript path/to/my/script.py

django-extensões de comando também tem comandos para automatizar scripts de como tarefas agendadas, que é algo que você mencionou que você gostaria de fazer.

Se você é um mais porcas e parafusos tipo de pessoa, você pode verificar este post muito detalhado descrevendo como fazer "independentes" scripts Django para ser executado a partir de trabalhos do cron e outros enfeites.

Respondeu 20/12/2008 em 09:39
fonte usuário

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