Большинство моих сценариев командной строки (и cron) выглядят примерно так:
#!/usr/bin/env python
from django.core.management import setup_environ
import settings
setup_environ(settings)
from django.db import transaction
... code ...
# you need to do the followng before exit if you did any DB changes.
transaction.commit_unless_managed()
Обновление для комментариев:
Если вы сделали какие-либо сохранения / другие изменения, тогда мой (возможно, несколько устаревший) ответ - Да. Я не знаю, требуется ли это в последнем стабильном выпуске, но я вроде человека с поясом, когда дело доходит до моей базы данных. Я вижу transaction.commit_unless_managed()
в конце моих сценариев как своего рода сеть безопасности: если управляемый режим действует, то это NOP, если не , то это гарантирует, что фиксация произойдет. 1011 *