我使用ZODB,我想我的'database_1.fs'
文件複製到其他'database_2.fs'
, 所以我打開的'database_1.fs'
根字典和我(pickle.dump
)它在一個文本文件中。從ZODB醃我的字典,但我得到了一個更小的尺寸?
然後我(pickle.load
)它在一個字典變量中,最後我用字典變量更新另一個'database_2.fs'
的根字典。
它的工作原理,但我不知道爲什麼'database_1.fs'
的大小不等於其他'database_2.fs'
的大小。
他們仍然是彼此的副本。
def openstorage(store): #opens the database
data={}
data['file']=filestorage
data['db']=DB(data['file'])
data['conn']=data['db'].open()
data['root']=data['conn'].root()
return data
def getroot(dicty):
return dicty['root']
def closestorage(dicty): #close the database after Saving
transaction.commit()
dicty['file'].close()
dicty['db'].close()
dicty['conn'].close()
transaction.get().abort()
那麼這就是我做什麼: -
import pickle
loc1='G:\\database_1.fs'
op1=openstorage(loc1)
root1=getroot(op1)
loc2='G:database_2.fs'
op2=openstorage(loc2)
root2=getroot(op2)
>>> len(root1)
215
>>> len(root2)
0
pickle.dump(root1, open("save.txt", "wb"))
item=pickle.load(open("save.txt", "rb")) #now item is a dictionary
root2.update(item)
closestorage(op1)
closestorage(op2)
#after I open both of the databases
#I get the same keys in both databases
#But `database_2.fs` is smaller that `database_2.fs` in size I mean.
>>> len(root2)==len(root1)==215 #they have the same keys
True
注:
(1)有持續的字典和列表原
他們的database_1.fs
(2)兩具有相同的長度和相同的索引。
ZODB存儲持久性事務日誌AFAIR。 –
你是說日誌文件佔用一個額外的大小? –