python - select_related用法 - select_related




在Django之外使用Django数据库层? (6)

对于django 1.5 on(支持多个数据库),DATABASE设置也已更改。 你需要调整以前的答案......

settings.configure(
    DATABASES = { 'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'db_name',
        'USER': 'db_usr',
        'PASSWORD': 'db_pass',
        'HOST': '',
        'PORT': '',
        }, },
    TIME_ZONE = 'Europe/Luxembourg'
)

我有一个很好的数据库,我在Django中创建,我想通过我的网站之外的一些python脚本接口,所以我很好奇是否可以在Django之外使用Django数据库API网站,如果有的话,有没有人知道如何做到这一点? 谷歌并没有因此受到很多打击。


对于django 1.7,我使用以下内容来启动和运行。

settings.py:

from django.conf import settings
settings.configure(
    DATABASES={
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'name',
            'USER': 'usr',
            'PASSWORD': 'secret',
            'HOST': '127.0.0.1',
            'PORT': '5432',
        },
    },
    TIME_ZONE='America/Montreal',
)

在包含启动例程的文件中

import os
import django

import v10consolidator.settings
from myapp.models import *

os.environ.setdefault(
    "DJANGO_SETTINGS_MODULE",
    "myapp.settings"
)
django.setup()

您只需在进行任何调用之前配置Django设置,包括导入模型。 像这样的东西:

from django.conf import settings
settings.configure(
    DATABASE_ENGINE = 'postgresql_psycopg2',
    DATABASE_NAME = 'db_name',
    DATABASE_USER = 'db_user',
    DATABASE_PASSWORD = 'db_pass',
    DATABASE_HOST = 'localhost',
    DATABASE_PORT = '5432',
    TIME_ZONE = 'America/New_York',
)

再次确保在运行之前运行该代码,例如:

from your_app.models import *

然后像往常一样使用DB API。



要从其他应用程序中使用Django ORM,您需要:

1) export DJANGO_SETTINGS_MODULE=dproj.settings

2)将Django app文件夹添加到路径中(您可以在非django-app的代码中执行此操作):

sys.path = sys.path + ['/path/to/your/app/']

3)如果使用SQLite,请使用settings.py中db文件的完整路径:

DATABASE_NAME = '/path/to/your/app/base.db'

import os, sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")
sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

from app.models import MyModel






django