Django: Как я могу использовать мои классы моделей для взаимодействия с моей базой данных вне Django? - PullRequest
13 голосов
/ 20 декабря 2008

Я хотел бы написать скрипт, который взаимодействует с моей БД с использованием модели приложения Django. Тем не менее, я хотел бы иметь возможность запустить этот скрипт из командной строки или через cron. Что все, что мне нужно импортировать, чтобы это разрешить?

Ответы [ 3 ]

15 голосов
/ 20 декабря 2008

Вам необходимо установить переменные окружения Django. Они сообщают Python, где находится ваш проект и как называется модуль настроек (имя проекта в модуле настроек необязательно):

import os

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

Теперь вы сможете получить доступ к моделям:

from myproject.models import MyModel

all_my_models = MyModel.objects.all()
13 голосов
/ 20 декабря 2008

Предпочтительным способом должно быть добавление пользовательской команды , а затем выполнение ее как любой другой команды django-admin (не путать с django.contrib.admin):

./manage.py mycustomcommand --customarg

Настройка DJANGO_SETTINGS_MODULE должна использоваться только тогда, когда пользовательская команда неосуществима.

5 голосов
/ 20 декабря 2008

В зависимости от ваших потребностей, django-command-extensions может сэкономить вам немного времени. Чтобы запустить любой скрипт как есть, не возиться с переменными окружения, просто наберите:

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

У django-command-extensions также есть команды для автоматизации сценариев в качестве заданий cron, что вы упомянули и хотели бы сделать.

Если вы более типичный человек, вы можете проверить этот очень подробный пост , в котором рассказывается, как создавать "автономные" сценарии django для запуска из заданий cron и всего такого.

...