2
我正在編寫一個需要與多個數據庫(不是同時)交互的腳本。爲了促進這一點,我在字典中維護數據庫相關信息(連接等)。另外,我使用sqlAlchemy進行與db的所有交互。我不知道這是否與這個問題有關。創建池對象(Python)
我有一個函數來設置池。它看起來有點像這樣:
def setupPool():
global pooled_objects
for name in NAMES:
engine = create_engine("postgresql+psycopg2://postgres:[email protected]/%s" % name)
metadata = MetaData(engine)
conn = engine.connect()
tbl = Table('my_table', metadata, autoload=True)
info = {'db_connection': conn, 'table': tbl }
pooled_objects[name] = info
,我不知道是否有在上面的代碼中任何陷阱,因爲我使用的是相同的變量名,而其並不清楚(我ATLEAST),如何將潛在的指針到資源(連接正在處理)。例如,將創建另一個引擎(到不同的數據庫)並將其分配給'引擎'變量會導致GC'收集'以前的實例(因爲沒有代碼正在使用該引用 - 池仍在安裝中)。
簡而言之,上面的代碼是OK嗎?如果不是,那麼爲什麼不 - 我是如何解決上述問題的?