在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)])
答案 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())