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 に戻す必要があります。これに対する適切な解決策を思いつくことができません。