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

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

Вам необходимо настроить переменные среды 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-команд может сэкономить вам немного времени. Чтобы запускать любой скрипт как есть, не возиться с переменными окружения, просто введите:

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

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

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