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

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

3 ответа

Вам необходимо настроить переменные окружения 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()

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

./manage.py mycustomcommand --customarg

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

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

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

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

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

Другие вопросы по тегам