[mod_python] Re:mod_python and connection to database. (Rodion)

Thimios Katsoulis thkatsou at yahoo.gr
Sat Oct 13 11:06:36 EDT 2007


Hello.

Sorry for my poor english. Here is my mod_python code. This is a simple 
URL shorter:

from mod_python import apache, util
import psycopg2 as psycopg

def handler(req):
     req.content_type = "text/plain"
     url_id = req.args
     connection = psycopg.connect("dbname=my_db")
     cursor = connection.cursor()
     cursor.execute("""SELECT myurl FROM urls WHERE myid=%s""",(url_id))
     original_url = cursor.fetchone()[0]
     connection.close()
     util.redirect(req,original_url)
     req.status = apache.DONE
     return apache.DONE

This programme connects database everytime, but I want(need) force him 
to connect it continously

This script connects database everytime (psycopg.connect("dbname=my_db") 
, but I nedd force to stay conneceted with it continously. It is 
possible to make that in mod_python ? I have mod_python 3.2.10

Thanks in advance.
rdn
---------------

Yes mod_python can maintain global variables per interpreter, so you can open once the connection 
and all subsequent requests will use the opened connection.
You have to declare your connection variable as global e.g. :

    
    def getConn(self):        
        
        try:
            if _conn == None:
                self.openConn()
           
                
        except NameError:
            self.openConn()
        return _conn
    
    def openConn(self):
        
        global _conn
        _conn = connect(self.ConnStr)


So when you want to access it you call self.getConn().
The _conn global variable will instantiate once for each mod_python apache process.
You can include some apache.log_error calls in the code above to watch 
for yourself when the  _conn varible gets instantiated and when it is retreived as global.
Please take notice from what I have observed that while you maintain open connections to DB (postgresql too in my case)
you cannot change structure of the tables etc in the DB..
Of course if you are using modules and not objects you have to alter  the code to  support (removing self ..) modules.
 







      
___________________________________________________________ 
Χρησιμοποιείτε Yahoo!; 
Βαρεθήκατε τα ενοχλητικά μηνύματα (spam); Το Yahoo! Mail 
διαθέτει την καλύτερη δυνατή προστασία κατά των ενοχλητικών 
μηνυμάτων http://login.yahoo.com/config/mail?.intl=gr 





More information about the Mod_python mailing list