[Twisted-web] database best practices

Phil Mayers p.mayers at imperial.ac.uk
Tue Nov 25 04:58:37 EST 2008

Abdul-Wahid Paterson wrote:
> Hi
> I thought the twisted enterprise was meant to be more suited...
> http://twistedmatrix.com/projects/core/documentation/howto/enterprise.html
> (Sorry Martin for hijacking your question but I think we want to know 
> the same thing). Anyway, the method on this page sounds good but I 
> wasn't actually sure how I fit this in with the renderers. Especially, 
> there are some SQL queries I want to do before rendering anything on the 
> page and perhaps before even sending HTTP header information. If I am 
> calling the deffered from renderHTTP how do I use the result within 
> renderHTTP.
> An example would be nice :)

That's a pretty elementary question. Perhaps someone could add a simple 
example like this to the twisted.web docs?

from twisted.web import resource, server
from twisted.enterprise import adbapi

mypool = adbapi.ConnectionPool(...)

class page(resource.Resource)
   def render_GET(self, request):
     d = mypool.runInteraction(self.query, request_args)
     d.addCallback(self.ok, request)
     d.addErrback(self.err, request)

     return server.NOT_DONE_YET

   def query(self, cursor, request_args):
     """I run in a thread. Do database stuff here"""
     return cursor.fetchall()

   def ok(self, results, request):
     for row in results:

   def ok(self, failure, request):

More information about the Twisted-web mailing list