gpt4 book ai didi

python数据库实现

转载 作者:太空狗 更新时间:2023-10-29 20:23:02 26 4
gpt4 key购买 nike

我正在尝试用 python 实现一个简单的数据库程序。我到了向数据库添加元素、更改值等的地步。

class db:
def __init__(self):
self.database ={}

def dbset(self, name, value):
self.database[name]=value

def dbunset(self, name):
self.dbset(name, 'NULL')

def dbnumequalto(self, value):
mylist = [v for k,v in self.database.items() if v==value]
return mylist

def main():
mydb=db()
cmd=raw_input().rstrip().split(" ")
while cmd[0]!='end':
if cmd[0]=='set':
mydb.dbset(cmd[1], cmd[2])
elif cmd[0]=='unset':
mydb.dbunset(cmd[1])
elif cmd[0]=='numequalto':
print len(mydb.dbnumequalto(cmd[1]))
elif cmd[0]=='list':
print mydb.database
cmd=raw_input().rstrip().split(" ")

if __name__=='__main__':
main()

现在,作为下一步,我希望能够在此 python 代码中执行嵌套事务。我使用 BEGIN 命令开始一组命令,然后使用 COMMIT 语句提交它们。提交应该提交开始的所有事务。但是,回滚应该将更改恢复到最近的 BEGIN。我无法为此提出合适的解决方案。

最佳答案

一个简单的方法是保留一个“事务”列表,其中包含您能够回滚未决更改所需的所有信息:

def dbset(self, name, value):
self.transaction.append((name, self.database.get(name)))
self.database[name]=value

def rollback(self):
# undo all changes
while self.transaction:
name, old_value = self.transaction.pop()
self.database[name] = old_value

def commit(self):
# everything went fine, drop undo information
self.transaction = []

关于python数据库实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17373024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com