可以在Django外部使用Django数据库层吗?

91 投票
12 回答
32930 浏览
提问于 2025-04-15 18:45

我在Django里创建了一个很不错的数据库,现在我想通过一些在网站外部的Python脚本来访问它。我想知道是否可以在Django网站之外使用Django的数据库接口,如果可以的话,有没有人能告诉我怎么做?我在谷歌上找了很多,但没有找到什么有用的信息。

12 个回答

11

更新 在django 1.6版本中,setup_environ将被移除。

如果你能成功导入你的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
19

对于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()
84

在你进行任何操作之前,包括导入你的模型,你需要先配置一下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了。

撰写回答