[mod_python] subclassing Session for Postgresql

Troy Unrau troy at tblog.ath.cx
Tue Mar 15 04:42:15 EST 2005


I'm using postgresql for all of my website data, so naturally I was looking to 
use it for storing of session data.  The code doesn't seem to be postgresql 
specific as it uses the standard python db api, and the SQL is fairly 
standard.

from my source:

class SQLSession(Session.BaseSession):

    def __init__(self, req, 
                 db, table, key_colname, val_colname,
	         sid=0, secret=None,
                 timeout=0, lock=1):
        """
        SQLSession class arguments:

        req: mod_python request object
        db: python DB API 2 object, such as a postgresql connection returned
            from the psycopg module
        table: name of the SQL table to store objects in
        key_colname: name of the column in above table corresponding to the
                     session id key.
        val_colname: name of the column in above table corresponding to the
                     actual session data

        All other arguments follow from BaseSession in mod_python.  See docs
        for mod_python 3.1.x, section 4.8.1
        """

I have attached the code I've concocted that does the job for me, if anyone is 
interested.  It does work for me using a psycopg returned DB object for 
postgresql.

One comment.  Using this method, the apache lock calls don't seem to be 
required, however I have left them in there since they don't seem to be doing 
any harm.  What /should/ happen though is for locking to take into account 
the fact that there could be multiple apache servers in a cluster all using 
the same session data from one database.  In this case, a database oriented 
locking scheme should be implemented instead.

Comments, suggestions and reuse are welcome. (the file is under a very 
slightly modified BSD-style licence)

Cheers, 

Troy Unrau
http://tblog.ath.cx/troy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SQLSession.py
Type: application/x-python
Size: 9431 bytes
Desc: not available
Url : http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20050315/c9b4233e/SQLSession.bin


More information about the Mod_python mailing list