在Django之外使用Django数据库层?
我有一个很好的数据库,我在Django中创build,我想通过一些python脚本之外的我的网站的东西,所以我很好奇,如果有可能在Django之外使用Django数据库API网站,如果是的话,有没有人有任何可以做的信息? 谷歌并没有因此产生很多点击。
您只需在进行任何调用之前configurationDjango设置,包括导入模型。 像这样的东西:
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。
更新 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
对于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()
没有人提到最后一个选项:一个自定义的./manage.py
子命令 。
对于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应用程序文件夹添加到path中(你可以在你的非Django应用程序的代码中完成):
sys.path = sys.path + ['/path/to/your/app/']
3)如果使用SQLite,请在settings.py中使用db文件的完整path:
DATABASE_NAME = '/path/to/your/app/base.db'