在Django之外使用Django数据库层?

gct*_*gct 67 python mysql django

我有一个很好的数据库,我在Django中创建,我想通过我的网站之外的一些python脚本接口,所以我很好奇是否可以在Django之外使用Django数据库API网站,如果有的话,有没有人知道如何做到这一点?谷歌并没有因此而受到很多打击.

Fog*_*ird 65

您只需在进行任何调用之前配置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',
)
Run Code Online (Sandbox Code Playgroud)

再次确保在运行之前运行该代码,例如:

from your_app.models import *
Run Code Online (Sandbox Code Playgroud)

然后像往常一样使用DB API.

  • 最优秀,正是我所寻找的! (3认同)

Gab*_*Gab 15

对于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',
)
Run Code Online (Sandbox Code Playgroud)

在包含启动例程的文件中

import os
import django

import v10consolidator.settings
from myapp.models import *

os.environ.setdefault(
    "DJANGO_SETTINGS_MODULE",
    "myapp.settings"
)
django.setup()
Run Code Online (Sandbox Code Playgroud)


Dmi*_*nko 12

将在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
Run Code Online (Sandbox Code Playgroud)

  • 不推荐使用!setup_environ,我会想念你们 (2认同)

Dan*_*man 9

最后一个选项没有人提到:自定义./manage.py子命令.


Rah*_*hul 8

我正在寻找 django 3.0 的答案,但上述方法都不适合我。

我在https://docs.djangoproject.com/en/3.0/topics/settings/阅读了官方文档,这个脚本对我有用。

我的脚本 db_tasks.py 像这样在 mysite 中。

mysite
    mysite
    db.sqlite3
    db_tasks.py
    manage.py
    polls
Run Code Online (Sandbox Code Playgroud)

db_tasks.py

import os
import django

os.environ['DJANGO_SETTINGS_MODULE'] = 'dashboard.settings'
django.setup()

from polls.models import Question

print(Question.objects.all())
out: <QuerySet [<Question: WTU?]>
Run Code Online (Sandbox Code Playgroud)


Mah*_*kia 5

Here is the code I use. Just replace your_project with your Django project name, yourApp with your Django app name, any_model with the model you want to use in models file and any_fild with the field you want to get from the database:

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)
Run Code Online (Sandbox Code Playgroud)