从settings.py导入数据时出现Python-Django错误

时间:2018-01-02 19:04:37

标签: python django

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

追踪(最近一次通话):  在read_bbg中输入第12行的文件“Read_Data.py”     dbHost = settings.DATABASES ['default'] ['HOST'] KeyError:'default'

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

有人可以帮我解决这个错误吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

如果要配置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 ...