zodb and cherrypy working together

[ permalink ] [ download ]
# easy_install ZODB3
# easy_install cherrypy

import cherrypy
import cgi

from ZODB import FileStorage, DB
import transaction

class MyZODB(object):
  def __init__(self, path):
    self.storage = FileStorage.FileStorage(path)
    self.db = DB(self.storage)
    self.connection = self.db.open()
    self.dbroot = self.connection.root()

  def close(self):
    self.connection.close()
    self.db.close()
    self.storage.close()



def ehtml(s):
    return cgi.escape(s)

class HelloWorld(object):
    def index(self):
        # list everything passed, and allow adding more.
        r = ""
        for k,v in dbroot.items():
            r += "k:%s:      v:%s:<br>" % (ehtml(k), ehtml(v))

        r += "<form action='put' method='post'>"
        r += "<textarea name='stuff'></textarea>"
        r += "<input type='submit' name='submit' value='submit'>"
        r += "</form>"
        return r


    def put(self, **kwargs):
        # store all the args passed into the zodb.
        dbroot.update(kwargs)
        transaction.commit()

    put.exposed = True
    index.exposed = True

if __name__ == "__main__":
    db = MyZODB('./Data.fs')
    dbroot = db.dbroot

    cherrypy.quickstart(HelloWorld())
    db.close()

#
#
# http://renesd.blogspot.com/2008/07/zodb-cherrypy-python.html
#
#
#
hits counter