2013-08-20 173 views
0

我有一個包含數據庫設置(稱爲connection.py)的.py文件。我試圖將包含在我的connection.py中的變量導入到我的views.py中。但是,變量未被導入。從其他py文件導入變量

在我的views.py我有:

from connection import * 

def location_where_connection_variables_needed(request, some_id): 

conn = psycopg2.connect(conn_string) 
cursor = conn.cursor() 

我然後使用connection.py變量在我的views.py腳本。但是這些變量沒有被導入到我的views.py中。我將connection.py放在主文件夾中(即,connection.py與我的應用程序文件夾位於同一文件夾中)。這是否是正確的地方?還是我在做別的從根本上的錯誤?

編輯: 我的意思是不被導入: 我沒有得到任何錯誤,但由於views.py中的代碼未執行,因此未導入變量。如果我手動添加連接變量在我的views.py,一切工作正常。

Connection.py

conn_string = "host='localhost' dbname='test' user='postgres' password='pwd'" 
+2

我們應該猜測「不工作」是什麼意思? –

+0

什麼不工作?你是否得到一個ImportError異常? some_id的值是否爲空? – Brandon

+0

非常抱歉。我的意思是說,來自connection.py的變量不會被導入到views.py中。我更新了上面的語言。 – nlr25

回答

2

隨着不斷的價值觀,我通常把那些到一個名爲constants.py文件,並全部大寫,這是一個Python約定指定的值。所以,我將取代「connection.py」與「constants.py」本身:

# constants.py 
CONN_STRING = "host='localhost' dbname='test' user='postgres' password='pwd'" 


# views.py 
from constants import CONN_STRING 

def location_where_connection_variables_needed(request, some_id): 
    conn = psycopg2.connect(CONN_STRING) 
    cursor = conn.cursor() 

此外,一定要清除掉,可能不會得到通過manage.py清除出任何pyc文件。這有時會導致事情無法按預期工作。您可能也會遠離import *,因爲它不是隱含的(您無法看到要導入的內容),並且很容易碰到命名衝突。

0

你可以嘗試一個全局變量而不是本地的。使用它作爲

global conn_string = "host='localhost' dbname='test' user='postgres' password='pwd'"