title: python database implementation
body: <p>I am trying to implement a simple database program in python. I get to the point where I have added elements to the db, changed the values, etc. </p>
  
  <pre><code>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()
  </code></pre>
  
  <p>Now, as a next step I want to be able to do nested transactions within this python code.I begin a set of commands with BEGIN command and then commit them with COMMIT statement. A commit should commit all the transactions that began. However, a rollback should revert the changes back to the recent BEGIN. I am not able to come up with a suitable solution for this.</p>