5

我有关于这个查询的帖子,但其中大部分是针对 linux 的。它们都不是专门用于窗户的

在我的应用程序中,我正在设置数据库(sqlite3,Django 中的默认值)。编辑我的应用程序(mysite)的setting.py文件后

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'D:/Django_Code/sqlite.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

在发现我必须设置 DJANGO_SETTINGS_MODULE 环境后,Django 才能知道数据库设置。所以我把它设置为

DJANGO_SETTINGS_MODULE = "D:\Django_Code\mysite\mysite\settings.py"

在我发布时交叉检查数据库设置

>>> from django.db import connection
>>> cursor = connection.cursor()

它说 DJANGO_SETTINGS_MODULE 环境变量未定义。

需要帮助来正确设置 DJANGO_SETTINGS_MODULE。

4

1 回答 1

7

DJANGO_SETTINGS_MODULE在 Windows 中设置的最简单方法是使用set命令提示符中的命令。您还应该能够通过系统属性进行设置,但您需要关闭并重新打开命令提示符才能使更改生效。

DJANGO_SETTINGS_MODULE您也可以使用该set命令查询当前值:

C:\temp\testproject> set DJANGO_SETTINGS_MODULE

此外,您需要将其设置为 python 模块名称,而不是文件名(将其设置为文件名会给您类似“ Could not import settings 'C:\temp\testproject\settings.py'(是在 sys.path 上?):不支持按文件名导入。 ”)

例如,

C:\temp\testproject> set DJANGO_SETTINGS_MODULE=testproject.settings

然后你可以运行python并且可以导入模块。

>>> import sys
>>> sys.path += ['C:\\temp']
>>> from django.db import connection
>>> connection.cursor()
<django.db.backends.util.CursorDebugWrapper object at 0x02C7F0B0>

请注意,我们还明确地将包含 django 项目(testproject在本例中)的目录添加到sys.path,这实际上是 Python 查找模块的目录列表。这是必要的,因为 Python 将设置文件作为 python 模块导入,而不是文件(如前所述)。

如果您想要一个交互式 shell 来处理 Django 对象,您可以使用shell管理命令。在您的 Django 项目目录中,运行以下命令:

manage.py shell

由于您在 Windows 上,因此您可能必须这样做

python manage.py shell

相反,因为我个人遇到了 python 脚本不接收命令行参数的问题。

C:\temp\testproject> python manage.py shell

In [1]: from django.db import connection

In [2]: connection.cursor()
Out[2]: <django.db.backends.util.CursorDebugWrapper at 0x33a0bd0>

(请注意,我已经安装了IPython,而 Django 很聪明并且正在使用它;如果你没有安装 IPython,你的 shell 看起来会略有不同。)

如果您想使用 Django 运行脚本,最简单的方法是编写自定义管理命令,然后您可以使用manage.py.

于 2012-10-12T08:20:14.920 回答