2014-12-19 92 views
0

我有想出如何搜索這個麻煩未開封的數據庫連接,所以如果答案已經存在,請你只點我在正確的方向,我會很樂意刪除。存儲在Python變量

我有這個在我的Python代碼

db = pg_driver.connect(user  = DB_NAME, 
         password = DB_WORD, 
         host  = DB_HOST, 
         port  = DB_PORT 
) 

這一切都完美。我很好奇,但如果我可以將它放入一個全球性的文件,然後,做這樣的事情:

db = global.db 
# OR something like this, where the() says to actually do the opening. 
db = global.db() 

然後,就在當地db將有打開的連接,但global.db會只是抱着怎麼樣我通常會打開數據庫。我的想法是,不是有四條線,而是有一條線,如果我改變了一些關於如何連接到數據庫的信息,我可以一次更新所有內容,而不必更新多個內容。

不過,我不想global.db舉行一個不斷開放的數據庫連接,因爲這可能會導致與更新的相關問題。此外,當我需要時,我永遠不能使用打開和關閉數據庫的良好做法。如果我要保留我的代碼(如圖所示),並致電db.close(),那麼global.db也將被關閉,並且對於腳本中的任何其他用途都將無效。

理想的情況是使用宏來完成,但是Python沒有那些從我的理解。

謝謝。

回答

1

global.py,創建一個partial對象。

import functools 
db = functools.partial(pg_driver.connect, 
         user=DB_NAME, 
         password=DB_WORD, 
         host=DB_HOST, 
         port=DB_PORT) 

然後,db是一個可調用的對象,可以像你想要的那樣使用。

import global 
db = global.db()