2017-02-28 138 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'} 
} 
相關問題