我希望能够通过外部应用程序使用Django的ORM来操作数据库

对于Django的模型操作和引用。

python manage.py MY_COMMAND

只需要一个选项:
如果你这样做,就能完成,但是你需要将它放置在Django应用程序下的/app_name/management/commands/MY_COMMAND.py,并且继承BaseCommand,如下所示。

from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
    def handle(self, *args, **options):
        print 'hogefuga'

通过这样做,可以将上述的`manage.py MY_COMMAND`作为Django的扩展命令来使用。
如果想要创建与Django应用相关的东西,上述方法就很好。

虽然与Django应用程序无关,但我想要参考数据库。

如果将Django的数据库作为某种管理信息的主控,并且想要与存储的结果相互配合使用其他程序时,我们希望以外部调用的方式而不是使用manage.py的扩展来实现。

Django的后台只是普通的SQLite或MySQL,所以直接访问并读取信息也可以。但既然已经在Django中定义了模型,不使用ORM也有点可惜。
所以,这里介绍一种从外部使用ORM的方法。
注意:以下方法将使应用依赖于Django项目。如果Django项目的目录发生变化,当然也需要更改引用的目标。

将Project作为库导入

您可以按照以下步骤从外部使用Django的ORM功能。

    • sys.pathにDjangoのプロジェクトを指定

 

    • Djangoの環境変数DJANGO_SETTINGS_MODULEにプロジェクトsettings.pyを指定

 

    modelsのimport
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys

def CallORMapper():
    sys.path.append('/YOUR/DJANGO-PROJECT')
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DJANGO-PROJECT.settings")
    objects = MODEL_NAME.objects.all()
    from DJANGOAPPNAME.models import MODEL_NAME
    print objects

if __name__ == "__main__":
    CallORMapper()

以下是参考原文的中文译文:

请提供仅一种中文翻译选项。

参考资料

    • DjangoモデルをDjangoプロジェクトの外から使う

 

    • Use only some parts of Django?

 

    Using only the DB part of Django
bannerAds