sqlalchemy:撤消元数据。删除(表)

sqlalchemy:撤消元数据。删除(表),sqlalchemy,Sqlalchemy,对于某些相当复杂的单元测试环境,我们希望动态更改元数据中包含的表。支持使用.remove(table)甚至.clear()从中删除表。但是以后如何重新添加这样的表呢 元数据中有一个\u add\u table(name,schema)方法,但这似乎不是官方的方法。如果必须走“使用内部方法”的路线,那么表.\u set\u parent(metadata)似乎更合适 还有一个Table.tometadata(metadata),它创建了一个附加到新元数据的新表实例。因此,我可以创建一个完整的新元数

对于某些相当复杂的单元测试环境,我们希望动态更改元数据中包含的表。支持使用
.remove(table)
甚至
.clear()
从中删除表。但是以后如何重新添加这样的表呢

元数据中有一个
\u add\u table(name,schema)
方法,但这似乎不是官方的方法。如果必须走“使用内部方法”的路线,那么
表.\u set\u parent(metadata)
似乎更合适

还有一个
Table.tometadata(metadata)
,它创建了一个附加到新元数据的新表实例。因此,我可以创建一个完整的新元数据并附加所有“现在需要”的表。但这意味着所有剩余的代码都需要了解连接到新元数据的新表实例。我不想走这条路


更新:我们现在正在考虑fork/multiprocessing,只在子流程(隔离环境)中加载表,这样只有该子流程被“污染”,下一个测试不会受到影响。我在这里指出这一点是为了完整性,它与主要问题没有严格的关系,但可能会帮助其他人找到这个问题。

几乎不支持以非加法方式对
元数据
对象进行变异,总的来说,您不应该在此基础上构建用例。使用新的
元数据
对象,其中包含您在特定场景中寻找的模式,将最有效。

好的,这是一个答案。这不是我所希望的,但仍然是。我更新了问题,以包括我们当前的解决方案。