Python 将多个ZODB数据库添加到一起

Python 将多个ZODB数据库添加到一起,python,database,zodb,Python,Database,Zodb,我有三个python对象数据库,我通过ZODB模块构建了它们,我想将它们合并成一个。我之所以有三个而不是一个,是因为每个对象都属于三个总体中的一个,并且在我的代码对所述对象进行分析后被添加到数据库中。每个对象的分析肯定可以并行进行。我的代码需要几天才能运行,因此为了避免这是一个为期一周的工作,我有三台计算机,每台计算机处理三个群体中的一个群体的对象,并在完成后输出一个ZODB数据库。由于ZODB处理冲突的方式,我无法让三台计算机将不同群体的对象分析添加到同一个数据库中。实际上,在关闭数据库之前,

我有三个python对象数据库,我通过ZODB模块构建了它们,我想将它们合并成一个。我之所以有三个而不是一个,是因为每个对象都属于三个总体中的一个,并且在我的代码对所述对象进行分析后被添加到数据库中。每个对象的分析肯定可以并行进行。我的代码需要几天才能运行,因此为了避免这是一个为期一周的工作,我有三台计算机,每台计算机处理三个群体中的一个群体的对象,并在完成后输出一个ZODB数据库。由于ZODB处理冲突的方式,我无法让三台计算机将不同群体的对象分析添加到同一个数据库中。实际上,在关闭数据库之前,它是从内部锁定的

我的问题是: 1) 如何将多个.fs数据库文件合并到一个主数据库中?每个数据库的结构完全相同,这意味着每个数据库之间的字典结构相同。例如,MyDB可以表示第一个总体的ZODB数据库结构:

root.['MyDB']['ID123456']['property1']
        ...  ['ID123456']['property2']
        ...       ...        ...

root.['MyDB']['ID123457']['property1']
        ...  ['ID123457']['property2']
        ...       ...        ...

... 
其中省略号表示更多相同的内容。对于数据库中的每个“IDXXXXXX”键,“property1”、“property2”等键的名称都是相同的,尽管值肯定会有所不同

2) 如果并行运行此代码,同时仍然生成一个ZODB结构,那么更明智的做法是什么

如果需要澄清,请告诉我


谢谢

更明智的做法是在进程之间共享ZODB存储

ZEO在网络上共享一个ZODB数据库,并将冲突解决扩展到多个客户端,这些客户端可以驻留在同一台机器上或其他地方

或者,您可以使用存储ZODB,而不是使用标准的
文件存储
;该后端使用传统的关系数据库来提供并发访问

有关任一选项的一些用法示例,请参见


否则,ZODB数据结构仅仅是持久化的Python数据结构;合并三个ZODB数据结构需要打开每个数据库并根据需要合并嵌套结构。

好的,因为ZODB对象数据库本质上只是python对象的字典,这恰好是我想要的答案。它讨论了如何将数据库添加到一起,并在这样做的过程中将两个数据库的任何相似的公共密钥添加到一起。这仍然是我要寻找的答案,因为这两个数据库是互斥的,因此结果将是一个ZODB数据库,其中包含其他两个数据库的未修改条目