ProgramingTip

Django 외부에서 Django 데이터베이스 레이어를 사용합니까?

bestdevel 2020. 11. 11. 20:27
반응형

Django 외부에서 Django 데이터베이스 레이어를 사용합니까?


Django에서 만든 멋진 데이터베이스 있고 웹 사이트 외부 의 일부 Python 펼쳐보기 인터페이스하고 싶습니다 . Django 외부에서 Django 데이터베이스 API를 사용할 수 있는지 궁금합니다. 사이트, 어디에 있는지 누구든지 어떻게 할 수 있습니까? Google은 이에 대해 많은 히트를 기록하지 않습니다.


모델 가져 오기 전에 포함하여 호출을 수행하기 전에 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 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()

setup_environ 업데이트 는 장고 1.6에서 제거됩니다.

파일을 가져올의 settings.py 수 난 웬지 - 편리한 setup_environ을 명령 살펴보십시오 .

from django.core.management import setup_environ
from mysite import settings

setup_environ(settings)

#here you can do everything you could in your project

아무도 언급하지 않은 마지막 옵션 : 사용자 지정 ./manage.py하위 명령 .


내가 사용하는 코드는 다음과 가변적입니다. your_project장고 프로젝트 이름, yourApp장고 앱 이름, any_model모델 파일에서 사용할 모델 및 any_fild데이터베이스에서 가져올 필드로 바꾸 십시오 .

from django.conf import settings
import django

from your_project.settings import DATABASES, INSTALLED_APPS
settings.configure(DATABASES=DATABASES, INSTALLED_APPS=INSTALLED_APPS)
django.setup()

from yourApp.models import *
print(any_model.objects.all()[0].any_fild)

(데이터베이스 데이터베이스가 지원됨) django 1.5의 경우 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 ORM을 사용하는 경우 다음이 필요합니다.

1) export DJANGO_SETTINGS_MODULE=dproj.settings

2) Django 앱 폴더를 경로에 추가합니다 (django 앱이 아닌 코드에서 수행 할 수 있음).

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

Hai Hu 의 답변을 바탕으로 Django 1.10 및 1.11에서 테스트 한 작업 스크립트가 있습니다. Django의 기본 앱은 다른 많은 앱에 필요하기 때문에 먼저 가져옵니다.

import os
from django.conf import settings
from django.apps import apps

conf = {
    'INSTALLED_APPS': [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.messages',
        'django.contrib.sessions',
        'django.contrib.sitemaps',
        'django.contrib.sites',
        'django.contrib.staticfiles',
        '<your_app>',
    ],
    'DATABASES': {
        'default': {
            'ENGINE': os.environ.get('DB_ENGINE'),
            'NAME': os.environ.get('DB_NAME'),
            'USER': os.environ.get('DB_USER'),
            'PASSWORD': os.environ.get('DB_PASSWORD'),
            'HOST': os.environ.get('DB_HOST'),
            'PORT': os.environ.get('DB_PORT'),
        }
    },
    'TIME_ZONE': 'UTC'
}

settings.configure(**conf)
apps.populate(settings.INSTALLED_APPS)

<import your app models here>

참고 URL : https://stackoverflow.com/questions/2180415/using-django-database-layer-outside-of-django

반응형