簡體   English   中英

合並兩個TinyDB數據庫

[英]Merge Two TinyDB Databases

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

問題 :合並兩個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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM