2012-08-28 65 views
0

我正在使用sqlalchemy進行連接池,並且我想讓引擎對象可用於其他模塊。我創建了其他模塊需要的實用程序模塊,它看起來像這樣:如何在python中正確寫入全局變量?

from sqlalchemy import [...] 

_engine = create_engine(url) 
_meta = MetaData() 
_meta.bind = _engine 

def get_meta(): 
     return _meta 

def get_engine(): 
     return _engine 

我想沒有前導下劃線之前這樣做,並沒有奏效。我的印象是,前面的下劃線只是python中私有變量的傳統風格,但顯然它可以影響代碼的解釋方式?無論如何,我只是試圖讓一個特定的活動引擎對象(控制對數據庫連接池的訪問)可用於其他模塊,並希望知道這樣做的最佳做法,謝謝。

+1

什麼不起作用?你想要發生什麼以及發生了什麼? – BrenBarn

+0

你的問題到底是什麼?是關於下劃線還是關於製作[singleton](http://en.wikipedia.org/wiki/Singleton_pattern)? –

+0

我的問題是,如果這個代碼是完成我上面陳述的目標的最好/正確的方法:有一個_particular_引擎對象可供其他模塊使用,所以它們都可以通過相同的引擎對象訪問數據庫池。 – Jaigus

回答

4

PEP008

_single_leading_underscore:弱 「內部使用」 的指標。例如。 from M import *不導入名稱以下劃線開頭的對象。

所以是的解釋器處理帶有前導下劃線的標識符與不帶標識符的標識符不同。