带文件存储的ZODB python数据库:为什么临时文件保留在磁盘上?
我正在Python3.6中试验ZODB数据库模块。在我的实验中,我创建了一个带文件存储的ZODB python数据库:为什么临时文件保留在磁盘上?,python,database,python-3.x,python-3.6,zodb,Python,Database,Python 3.x,Python 3.6,Zodb,我正在Python3.6中试验ZODB数据库模块。在我的实验中,我创建了一个TreeSet(),并用数据填充它。然后我提交事务(将更改保存到磁盘)并关闭数据库 from ZODB.FileStorage import FileStorage from ZODB import DB from persistent import Persistent from BTrees.OOBTree import TreeSet import transaction if __name__ == '__ma
TreeSet()
,并用数据填充它。然后我提交事务(将更改保存到磁盘)并关闭数据库
from ZODB.FileStorage import FileStorage
from ZODB import DB
from persistent import Persistent
from BTrees.OOBTree import TreeSet
import transaction
if __name__ == '__main__':
# 1. Create ZODB database
# ------------------------
storage = FileStorage("C:/database_test/mydb.db")
db = DB(storage)
conn = db.open()
root = conn.root()
root.files = TreeSet()
# 2. Fill the TreeSet
# --------------------
...
# 3. Save and close
# ------------------
transaction.commit()
conn.close()
db.close() # <- is this even necessary?
从ZODB.FileStorage导入FileStorage
从ZODB导入数据库
从持久导入持久
从BTrees.OOBTree导入树集
进口交易
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
# 1. 创建ZODB数据库
# ------------------------
存储=文件存储(“C:/database\u test/mydb.db”)
db=db(存储)
conn=db.open()
根=连接根()
root.files=TreeSet()
# 2. 填满树丛
# --------------------
...
# 3. 保存并关闭
# ------------------
commit()事务
康涅狄格州关闭
db.close()#不,它们不是真正的临时文件。它们是永久性文件,有时包含临时数据
除数据文件外,还创建了一些辅助文件。在不影响数据完整性的情况下,这些文件可能会丢失,但是丢失索引文件可能会导致启动极慢。()
不,它们不是真正的临时文件。它们是永久性文件,有时包含临时数据
除数据文件外,还创建了一些辅助文件。在不影响数据完整性的情况下,这些文件可能会丢失,但是丢失索引文件可能会导致启动极慢。()
.index
文件不是临时文件,而是持久化的索引文件。如果不存在,它将始终完全重新生成(对于较大的数据库,这将需要一点时间)
.temp
文件用于在完全提交之前生成的瞬态数据
.lock
文件用于确保没有两个进程打开该文件。它包含上次打开它的进程的PID。如果它终止了一个新进程,那么它将把它的PID写入其中
实际上还有更多的文件,它们记录在。中。.index
文件不是临时文件,而是持久化的索引文件。如果不存在,它将始终完全重新生成(对于较大的数据库,这将需要一点时间)
.temp
文件用于在完全提交之前生成的瞬态数据
.lock
文件用于确保没有两个进程打开该文件。它包含上次打开它的进程的PID。如果它终止了一个新进程,那么它将把它的PID写入其中
实际上还有更多的文件,它们都记录在文档中。谢谢,先生:-)谢谢,先生:-)谢谢,非常有趣!谢谢,很有意思!