gpt4 book ai didi

sqlalchemy:撤消 MetaData.remove(表)

转载 作者:行者123 更新时间:2023-12-01 23:13:16 26 4
gpt4 key购买 nike

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

MetaData 中有一个_add_table(name, schema) 方法,但这似乎不是官方方法。如果必须走“使用内部方法”路线,Table._set_parent(metadata) 似乎更合适。

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

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

最佳答案

MetaData 对象以非加法方式的变化几乎不被支持,总的来说你不应该在它之上构建用例。使用包含您在特定场景中寻找的架构的新 MetaData 对象效果最佳。

关于sqlalchemy:撤消 MetaData.remove(表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com