2017-02-28 136 views
1

我是python中的新手。我需要从另一个目录中的另一个文件访问python文件。我特别希望能够看到这些数据库的细节是在一个名为settings.py文件:如何从settings.py中获取数据库详细信息

DATABASES = { 
     'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'dynamic', 
     'USER': 'root', 
     'PASSWORD': 'root', 
     'HOST': '192.168.10.130', 
    } 
} 

如何访问这本字典的数据库从另一个文件中的另一个文件夹?

我试图做这样的(在我的其他项目,该项目工程):

from django.conf import settings 
dbHost = settings.DATABASES['default']['HOST'] 
dbUsername = settings.DATABASES['default']['USER'] 
dbPassword = settings.DATABASES['default']['PASSWORD'] 
dbName = settings.DATABASES['default']['NAME'] 

请帮助我。提前致谢。

+0

没有得到您的问题。你能说更多关于2个项目的例子吗? – Satevg

+0

@Satevg你需要更多的细节。我正在使用本教程来创建我的项目。 https://docs.djangoproject.com/en/1.10/intro/tutorial01/.And我做了这个教程的基本事情,然后我尝试获取数据库值 –

+0

为什么你认为你需要这个?数据库设置用于Django的内部使用,您不需要在视图中访问它们。 –

回答

3

如果你想在项目B使用projectA.settings.DATABASES,那么你应该在项目B添加了projectA路径:

项目B /myfile.py:

import sys 
sys.path.append("/path/to/projectA") 
from projectA import settings 

dbHost  = settings.DATABASES['default']['HOST'] 
dbUsername = settings.DATABASES['default']['USER'] 
dbPassword = settings.DATABASES['default']['PASSWORD'] 
dbName  = settings.DATABASES['default']['NAME'] 
+0

感谢您的答案它的权利,因为首先我做这个方法。但我需要从dango.conf中导入设置而不使用sys.path –

+0

,因为当我给生产总是需要更改路径。为了避免这种情况,我需要使用djano.conf或类似smililar方法动态访问该值 –

+0

您可以将相对路径附加到当前工作目录,这样它就可以在开发和生产中使用。否则,在您的部署脚本中使用项目根变量。 – Sdra

1

而不是硬编码您在Python中的凭据,您可以使用dj-database-url轻松加载环境变量中的数据库设置。

另一种选择是使用json.load()和一个小json文件。

1

项目2的settings.py里面,你可以导入PROJECT1设置文件为:

import project1.settings 

然后初始化数据库为:

DATABASES = { 'default': project1.settings.DATABASES['default'] } 
1
from django.conf import settings 
settings.DATABASES 
{'default': 
    {'ATOMIC_REQUESTS': False, 
    'AUTOCOMMIT': True, 
    'CONN_MAX_AGE': 3600, 
    'ENGINE': 'django.db.backends.mysql', 
    'HOST': '127.0.0.1', 
    'NAME': 'proj', 
    'OPTIONS': {'charset': 'utf8', 'sql_mode': 'traditional'}, 
    'PASSWORD': 'password', 
    'PORT': '20306', 
    'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 
    'TIME_ZONE': None, 
    'USER': 'root'} 
} 
相关问题