python数据库实现
我正在尝试用python实现一个简单的数据库程序。我已经在数据库中添加了元素,更改了值,等等python数据库实现,python,python-2.7,Python,Python 2.7,我正在尝试用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')
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代码中执行嵌套事务。提交应该提交开始的所有事务。但是,回滚应该将更改恢复到最近的开始。我无法为此找到合适的解决方案。一个简单的方法是保留一个“事务”列表,其中包含回滚挂起的更改所需的所有信息:
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 = []
这一切都可以在内置模块中免费获得。sqllite的提交和回滚的讨论比我所能理解的更为详细如果您将此作为一个学术练习,您可能希望查看Python烹饪书上的配方。它包括许多类,以便于您从SQL引擎中获得所需的功能
- 数据库用于创建不支持事务的数据库实例
- Database2继承自数据库,并提供表事务
- 表实现数据库表以及各种可能的交互
- Like和NotLike执行其他发动机中的Like运算符
- date和datetime是可用于数据库列的特殊数据类型
- DatePart、MID和FORMAT允许在某些情况下选择信息
除了类之外,还有用于连接操作的函数以及测试/演示。这正是我想要的。非常感谢你的回答。谢谢你的回答。我想为一个简单的数据库实现我自己的python代码。