如何强制新的 SQLAlchemy 实例 class
How to force new instance of SQLAlchemy class
我正在尝试在函数中创建 class 的新实例。该实例是第一次创建新的,尽管当我尝试创建一个额外的实例(通过重新访问路由)时,我得到了对原始对象的引用。
这是我构建应用程序的方式。请参阅下面的简化代码:
@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>
我尝试使用 db_session.expunge(test_obj)
和 del(test_obj)
(都在我的 Flask
路径中)删除对象,尽管我仍然得到对原始对象的引用。
我希望字典 t
在我每次调用它时提供一个 新对象实例。
如果我对你的问题理解正确,你只需要在每次调用路由时创建实例,而不是简单地读取先前创建的实例的值。
在你的路线中:
test_obj = t[t_type]['obj']()
在您的 t
定义中:
t = {
'footests': {'obj': FooTest,
'name': 'Foo Test',
...
},
...
}
我正在尝试在函数中创建 class 的新实例。该实例是第一次创建新的,尽管当我尝试创建一个额外的实例(通过重新访问路由)时,我得到了对原始对象的引用。
这是我构建应用程序的方式。请参阅下面的简化代码:
@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>
我尝试使用 db_session.expunge(test_obj)
和 del(test_obj)
(都在我的 Flask
路径中)删除对象,尽管我仍然得到对原始对象的引用。
我希望字典 t
在我每次调用它时提供一个 新对象实例。
如果我对你的问题理解正确,你只需要在每次调用路由时创建实例,而不是简单地读取先前创建的实例的值。
在你的路线中:
test_obj = t[t_type]['obj']()
在您的 t
定义中:
t = {
'footests': {'obj': FooTest,
'name': 'Foo Test',
...
},
...
}