9

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

4

3 に答える 3

0

これはすべて、組み込みのsqlliteモジュールで無料で利用できます。sqllite のコミットとロールバックについては、ここで理解できるよりも詳細に説明されています。

于 2013-06-28T20:29:31.730 に答える