我希望能够通过外部应用程序使用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