我正在尝试从常规Python脚本中访问我的Django数据库。到目前为止,我所做的是:
import os
import django
from django.db import models
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "m_site.settings")
django.setup()
from django.apps import apps
ap=apps.get_model('py','Post')
q=ap.objects.all()
for a in q:
print(a.title)
Django中有一个名为py
的应用程序,其中有很多帖子(models.py
,其中包含class Post(models.Model)
)。
我希望能够从常规Python脚本访问和更新此数据库。到目前为止,上面的脚本工作正常,我可以插入,更新或查询,但它看起来像是一个单独的数据库,而不是Django的py
应用程序中的数据库。我做错了什么或遗失了什么?任何帮助都将非常感激。
答案 0 :(得分:7)
考虑将您的脚本编写为custom management command。这将允许您通过manage.py
运行它,Django都已正确连接到您,例如。
python manage.py print_post_titles
这样的事情应该是一个好的开始:
from django.core.management.base import BaseCommand
from py.models import Post
class Command(BaseCommand):
help = 'Prints the titles of all Posts'
def handle(self, *args, **options):
for post in Post.objects.all():
print(a.title)