Here is a full example showing the creation of all the necessary objects and giving you full control over the session:
#!/usr/bin/env python # show python where the modules are import sys; sys.path.append('../'); sys.path.append('../../../') import web.error; web.error.enable() import os, time import web.database # Setup a database connection connection = web.database.connect( adapter="snakesql", database="webserver-session", autoCreate = 1, ) cursor = connection.cursor() # Obtain a session manager the full way import web.session manager = web.session.manager(driver='database', cursor=cursor, autoCreate=1) sessionID = manager.cookieSessionID() if not manager.load(sessionID): manager.create(sendCookieHeaders=False) manager.sendCookieHeaders() store = manager.store('testApp') def printPage(title, url, link, url2, link2, data): print """ <html> <h1>%s</h1> <p><a href="%s">%s</a></p> <p><a href="%s">%s</a></p> <p>%s</p> </html>"""%(title, url, link, url2, link2, data) # Write a simple application the full way if not manager.created: if web.cgi.has_key('destroy') and web.cgi['destroy'].value == 'True': manager.destroy(ignoreWarning=True, sendCookieHeaders=False) manager.sendCookieHeaders() print web.header('text/html') printPage( 'Session Destroyed', os.environ['SCRIPT_NAME'], 'Start Again', '','','' ) else: manager.setExpire(manager.expireTime+5, sendCookieHeaders=1) print web.header('text/html') data = [] data.append('SessionID: ' +manager.sessionID) data.append('Store Keys: '+str(store.keys())) data.append('Store App: '+store.app) data.append('Variable1: '+str(store['Variable1'])) data.append('ExpireTime: '+str(manager.expireTime)) printPage( 'Welcome back', os.environ['SCRIPT_NAME'], 'Visit Again', os.environ['SCRIPT_NAME']+'?destroy=True', 'Destroy Session', '<p>Every time you visit this page the expiry \ time increases 5 seconds</p>'+'</p><p>'.join(data) ) else: print web.header('text/html') store['Variable1'] = 'Python Rules!' printPage( 'New Session Started', os.environ['SCRIPT_NAME'], 'Visit Again', '', '', "Set variable1 to 'Python Rules!'" ) connection.commit() # Save changes connection.close() # Close the database connection
You can test this example by running the webserver scripts/webserver.py and visiting http://localhost:8080/doc/src/lib/webserver-web-session.py