【问题标题】:Python-Django error when importing data from settings.py从 settings.py 导入数据时出现 Python-Django 错误
【发布时间】:2018-01-02 19:04:36
【问题描述】:

我正在尝试从 settings.py 导入数据库设置,但出现错误:

Traceback(最近一次调用最后一次): 文件“Read_Data.py”,第 12 行,在 read_bbg dbHost = settings.DATABASES['default']['HOST'] KeyError:'默认'

import psycopg2
import csv
from django.conf import settings
import sys


def read_bbg(file):
    """
     read from csv and insert into db table 
    """
    settings.configure(DEBUG=True)
    dbHost = settings.DATABASES['default']['HOST']
    dbUsername = settings.DATABASES['default']['USER']
    dbPassword = settings.DATABASES['default']['PASSWORD']
    dbName = settings.DATABASES['default']['NAME']

    conn_string = """host='{0}' dbname='{1}' user='{2}' password='{3}' sslmode='require' """.format(dbHost,dbName,dbUsername,dbPassword)
    print(conn_string)
    conn=None

    """
    ##rest of the code##
    """

settings.py 位于 ./cf_proj 目录,read_bbg 函数位于 ./coveredfunds/Read_Data.py

谁能帮我解决这个错误?

【问题讨论】:

  • 尝试将 DJANGO_SETTINGS_MODULE=cf_proj.settings 添加到您的环境中

标签: python django


【解决方案1】:

尝试将os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cf_proj") 添加到您的主 wsgi 文件中

【讨论】:

  • 你的配置是否包含DATABASES = { 'default': { } }
  • 是的。数据库 = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'secret', 'USER': 'secret', 'PASSWORD': 'secret', 'HOST': 'tenx-dev1.bns', 'PORT': 5432, 'OPTIONS': { 'sslmode': 'require', } }
【解决方案2】:

您似乎正试图在配置的环境之外获取 Django 设置。我想这也是你添加settings.configure(DEBUG=True) 的原因,否则你会得到一个 ImproperlyConfigured 异常?

如果您想配置Django settings manually,那么您的设置实际上是空的,直到您手动配置它们。您只配置了 DEBUG。你可以在那里配置一个 ELEPHANT

settings.configure(DEBUG=True, ELEPHANT='big')

现在您的手动配置包括 DEBUG 和 ELEPHANT,没有其他任何配置。

不管怎样,@Jana 的答案是在正确的轨道上,但是你必须在这个文件或函数中设置默认的DJANGO_SETTINGS_MODULE 并将其设置为"cf_proj.settings"

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cf_proj.settings')

from django.conf import setttings
import psycopg2, csv, sys

def read_bbg(file):
    dbHost = settings.DATABASES['default']['HOST']
    ... and the rest of the code ...

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 2018-06-14
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多