Django: Как я могу использовать классы модели для взаимодействия с моей базой данных извне Django?
Я хотел бы написать script, который взаимодействует с моей БД, используя модель приложения Django. Тем не менее, я хотел бы иметь возможность запускать этот script из командной строки или через cron. Что мне нужно импортировать, чтобы это разрешить?
Ответы
Ответ 1
Вам нужно настроить переменные среды 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()
Ответ 2
Предпочтительным способом должно быть добавление пользовательской команды, а затем запустить его как любой другой django-admin
(не путать с django.contrib.admin
):
./manage.py mycustomcommand --customarg
Настройка DJANGO_SETTINGS_MODULE должна использоваться только тогда, когда пользовательская команда невозможна.
Ответ 3
В зависимости от ваших конкретных потребностей django-command-extensions может сэкономить вам немного времени. Для запуска любого script as-is без беспорядка с переменными окружения просто введите:
./manage.py runscript path/to/my/script.py
django-command-extensions также имеет команды для автоматизации скриптов как заданий cron, о чем вы упомянули, что вы хотели бы сделать.
Если вы больше похожи на людей с орехами и болтами, вы можете проверить это очень подробное сообщение, в котором излагаются, как сделать "автономный" django скрипты, которые будут выполняться из заданий cron и whatnot.