我正在尝试从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
有人可以帮我解决这个错误吗?
答案 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 ...