2016-03-01 54 views
0

我想在函數內創建一個類的新實例。第一次創建實例時,雖然當我嘗試創建一個額外的實例(通過重新訪問路由)時,我收回了對原始對象的引用。如何強制SQLAlchemy類的新實例

這是來自我構建應用程序的方式。請參見下面的簡化代碼:

@tests.route('/generate_test/<t_type>', methods=['GET']) 
def generate_test(t_type): 
    test_obj = t[t_type]['obj'] 
    ... 
    return test_obj 

其中T是一本字典象下面這樣:

t = { 
    'footests': {'obj': FooTest(), 
        'name': 'Foo Test', 
        ... 
        }, 
    ... 
} 

由於有許多不同類型的測試,我希望我可以用這個方法來提供所有的額外細節這與某種測試有關。當我第一次產生一個新的測試,測試對象FooTest是新的,這意味着id = None

雖然,我曾經來到過第二次和嘗試生成一個新的測試,在字典中的實例t仍與關聯從第一次測試實例,這意味着id = <id_from_last_time>

我試過(都在我的Flask路線)刪掉使用db_session.expunge(test_obj)del(test_obj)對象,但我仍然得到原始對象的引用。

我希望字典t提供一個新對象實例我每次調用它。

回答

1

如果我正確理解您的問題,您只需在每次調用路由時創建實例,而不是簡單地讀取先前創建的實例的值。

在您的路線:

test_obj = t[t_type]['obj']() 

在你t定義:

t = { 
    'footests': {'obj': FooTest, 
        'name': 'Foo Test', 
        ... 
        }, 
    ... 
} 
相關問題