2013-05-27 53 views
0

我有一個在mongoengine中切換我的數據庫的問題。我想下面的代碼按預期工作:開關db與mongoenine

 

class Test(Document): 
    f1 = StringField() 

db_names = ['s' + str(i) for i in range(5)] 

for db_name in db_names: 
    connect(db_name) 
    for i in range(10): 
     Test.objects.create(f1=uuid1().hex) 
    disconnect(db_name) 
 

我知道context_managers.switch_db並已將目光轉向how to switch database name in mongoengine但對我來說這是行不通的。我需要爲所有模型切換我的數據庫。

回答

0

你試過了嗎?

class Test(Document): 
    f1 = StringField() 

db_names = [register_connection('s' + str(i), ...) for i in range(5)] 
for db_name in db_names: 
    with switch_db(Test, db_name) as Test: 
    for i in range(10): 
     Test(f1=uuid1().hex).save() 

更多關於register_connection看到help(register_connection)在控制檯。

+0

是的,我以這種方式解決了這個問題。至於我,它不是很好的溶劑,因爲我在不同的文件中有很多模型。如果不是「issubclass(doc,moe.EmbeddedDocument):do_stuff()」,那麼在「me.base._document_registry.values()至於我不明顯。 –