장고 외부에서 장고 데이터베이스 레이어를 사용하고 있습니까?
저는 Django에서 만든 멋진 데이터베이스를 가지고 있습니다.그리고 제 웹사이트 이외의 python 스크립트를 통해 인터페이스하고 싶습니다.그래서 저는 Django 사이트 밖에서 Django 데이터베이스 API를 사용할 수 있는지 궁금하고, 사용할 수 있는 방법을 알고 있는 사람이 있습니까?구글은 이것에 대해 많은 히트작을 내놓지 않았다.
모델 Import를 포함한 콜을 수행하기 전에 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에서는 다음을 사용하여 시작 및 실행했습니다.
설정을 지정합니다.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_environment는 django 1.6에서 삭제됩니다.
settings.py 파일을 Import 할 수 있는 경우는, 편리한 setup_environment 커맨드를 참조해 주세요.
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
#here you can do everything you could in your project
저는 django 3.0에 대한 답을 찾고 있었는데, 위의 방법 중 어느 것도 제게는 효과가 없었습니다.
저는 https://docs.djangoproject.com/en/3.0/topics/settings/에서 공식 문서를 읽었는데 이 스크립트가 효과가 있었습니다.
프로젝트 구조
mysite
mysite
...
settings.py
db.sqlite3
db_tasks.py
manage.py
polls
db_module을 클릭합니다.py:
import os
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
django.setup()
from polls.models import Question
print(Question.objects.all())
out: <QuerySet [<Question: WTU?]>
마지막 옵션은 아무도 언급하지 않은 사용자 지정 하위 명령입니다.
여기 제가 사용하는 코드가 있습니다.교환만 하면 됩니다.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 ORM을 사용하는 경우:
1)export DJANGO_SETTINGS_MODULE=dproj.settings
2) 경로에 Django 앱 폴더를 추가합니다(django 앱 이외의 코드로 할 수 있습니다).
sys.path = sys.path + ['/path/to/your/app/']
3) SQLite를 사용하는 경우 설정에서 db 파일의 전체 경로를 사용합니다.py:
DATABASE_NAME = '/path/to/your/app/base.db'
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'
)
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에서 테스트된 작업 스크립트를 소개합니다.장고의 기본 앱은 다른 앱에 많이 필요하기 때문에 먼저 Import합니다.
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>
Django > = V.3.2.3 모델 Import 전에 다음 사항을 입력합니다.
import os
import django
os.environ.setdefault(
'DJANGO_SETTINGS_MODULE', 'mymodule.settings'
)
django.setup()
from app.models import MyModel
그런 다음 평소와 같이 모델을 사용합니다.
myitem = MyModel()
myitem.data = 'some data'
myitem.save()
안부 전해요
django 3+의 경우:
#########################
디렉토리 및 파일 구조:
--my_project
----my_project > 설정.화이
----myapps
##########################
import sys
sys.path.append("C:/Users/khder/Desktop/test/my_project") #append your main project directory path
import os
import django
#define your setting file as the following.
os.environ.setdefault(
'DJANGO_SETTINGS_MODULE', 'my_project.settings'
)
django.setup()
from my_app.models import MyModel
qs = MyModel.objects.all()
print(qs)
주의: 경로에는 항상 slash '/'를 사용합니다.Windows 를 사용하고 있는 경우에도 백슬래시 '는 사용하지 않습니다).
이것은 예에 불과하며, 고객의 사례/요구에 따라 변경합니다.
도움이 됐으면 좋겠군
언급URL : https://stackoverflow.com/questions/2180415/using-django-database-layer-outside-of-django
'sourcecode' 카테고리의 다른 글
기본 패키지에서 클래스를 가져오는 방법 (0) | 2022.09.13 |
---|---|
변경 내용이 저장되지 않은 상태로 웹 페이지를 떠나기 전에 사용자에게 경고 (0) | 2022.09.13 |
org.internate 를 선택합니다.Mapping Exception:java.util의 유형을 확인할 수 없습니다.표: College의 [org.hibernate.mapping]열 목록:열(학생)] (0) | 2022.09.13 |
열을 빈 문자열로 기본 설정하다 (0) | 2022.09.12 |
PHP 스크립트 - linux 또는 Windows에서 실행 중 어느 쪽을 검출합니까? (0) | 2022.09.12 |