合并两个TinyDB数据库

时间:2018-11-04 10:51:28

标签: python json python-3.x file tinydb

在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)])

1 个答案:

答案 0 :(得分:0)

  

问题:合并两个TinyDB数据库...可能我需要更改实现方式!


  

来自TinyDB Documentation
  为什么不使用TinyDB?
  ...
  您真的很担心性能,需要一个高速数据库。

将单行插入数据库总是很慢,请尝试db.insert_multiple(...
第二个。与generator。让您可以选择减少内存占用。

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

# From generator function
Try1.insert_multiple(generator())