4

在 Python 上,我正在尝试合并从 TinyDB 获得的多个 JSON 文件。

我无法找到一种方法来直接合并两个 tinydb JSON 文件,这些文件的密钥按顺序自动生成,不会随着下一个文件的打开而重新启动。

用代码的话,我想合并大量数据,如下所示:

 hello1={"1":"bye",2:"good"....,"20000":"goodbye"}    

    hello2={"1":"dog",2:"cat"....,"15000":"monkey"}

作为:

Hello3= {"1":"bye",2:"good"....,"20000":"goodbye","20001":"dog",20002:"cat"....,"35000":"monkey"}

由于使用 TinyDB 找到正确方法的问题,我在经典语法 json 文件中打开并转换它们,加载每个文件然后执行:

Data = Data['_default']

我遇到的问题是,目前代码可以工作,但存在严重的内存问题。几秒钟后,创建的合并 Db 包含大约 28Mb 的数据,但(可能)缓存饱和,它开始以非常慢的方式添加所有其他数据。

所以,我需要在一定数量的数据之后清空缓存,或者我可能需要改变这样做的方式!

这就是我使用的代码:

Try1.purge()
Try1 = TinyDB('FullDB.json')

with open('FirstDataBase.json') as Part1 :
     Datapart1 = json.load(Part1)
     Datapart1 = Datapart1['_default']

     for dets in range(1, len(Datapart1)):

         Try1.insert(Datapart1[str(dets)])


with open('SecondDatabase.json') as Part2:
     Datapart2 = json.load(Part2)
     Datapart2 = Datapart2['_default']

     for dets in range(1, len(Datapart2)):

         Try1.insert(Datapart2[str(dets)])
4

1 回答 1

-1

问题:合并两个 TinyDB 数据库......可能我需要改变这样做的方式!


来自TinyDB 文档
为什么不使用 TinyDB?
...
您真的很关心性能并且需要高速数据库。

单行插入数据库总是很慢,试试db.insert_multiple(....
第二个。与generator. 为您提供抑制内存占用的选项。

# From list
Try1.insert_multiple([{"1":"bye",2:"good"....,"20000":"goodbye"}])

或者

# From generator function
Try1.insert_multiple(generator())
于 2018-11-04T13:29:09.473 回答