У меня есть хорошая база данных, которую я создал в Django, и я хотел бы взаимодействовать с некоторыми скриптами python за пределами моего веб-сайта, поэтому мне любопытно, можно ли использовать API базы данных Django за пределами сайта Django, и если у него есть какая-либо информация о том, как это можно сделать? Google не дал много хитов для этого.
Использование слоя базы данных Django за пределами Django?
Ответ 1
Вам просто нужно настроить параметры 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 *
Затем просто используйте API DB как обычно.
Ответ 2
Обновить setup_environ нужно удалить в django 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
Ответ 3
Для 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()
Ответ 4
Последний вариант, о котором никто не упоминал: пользовательская подкоманда ./manage.py
.
Ответ 5
Для 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'
)
Ответ 6
Для использования Django ORM из других приложений вам необходимо:
1) export DJANGO_SETTINGS_MODULE=dproj.settings
2) Добавьте свою папку приложения Django в путь (вы можете сделать это в коде своего не-django-приложения):
sys.path = sys.path + ['/path/to/your/app/']
3) Если вы используете SQLite, используйте полный путь к файлу db в settings.py:
DATABASE_NAME = '/path/to/your/app/base.db'