[Twisted-Python] Using different cursor types with psycopg+twisted.enterprise.adbapi?

Vlado Handziski handzisk at tkn.tu-berlin.de
Fri Apr 18 18:17:46 EDT 2008


On Fri, Apr 18, 2008 at 10:38 PM, Nathan <nathan.stocks at gmail.com> wrote:
>
> On Fri, Apr 18, 2008 at 2:12 PM, Vlado Handziski
>  <handzisk at tkn.tu-berlin.de> wrote:
>  >  I am using the hack below from Federico Di Gregorio to force a
>  >  RealDictCursor in my adbapi stores:
>  >
>  >  #module twistedpg.py
>  >  #Author: Federico Di Gregorio
>  >
>  >  from psycopg2 import *
>  >  from psycopg2 import _psycopg as _2psycopg
>  >  from psycopg2.extensions import register_type, UNICODE, connection as
>  >  _2connection
>  >  from psycopg2.extras import RealDictCursor
>  >
>  >  del connect
>  >  def connect(*args, **kwargs):
>  >     kwargs['connection_factory'] = connection
>  >     return _2psycopg.connect(*args, **kwargs)
>  >
>  >  class connection(_2connection):
>  >     def cursor(self):
>  >         return _2connection.cursor(self, cursor_factory=RealDictCursor)
>  >
>  >  register_type(UNICODE)
>  >
>  >  and then:
>  >
>  >         self.dbpool = adbapi.ConnectionPool('twistedpg',
>  >                                             database=dname,
>  >                                             user=duser,
>  >                                             password=dpasswd,
>  >                                             host=dhost,
>  >                                             cp_reconnect=True)
>
>  Oh, ok!  That makes sense.  So since twisted just calls the underlying
>  db module's connect() function, you just (in essence) sub-classed the
>  whole psycopg2 module and overrode connect() to use the DictCursor.
>
>  I don't understand what the "UNICODE" stuff is about, though.  Do you
>  know what that is?
>

Effectively it is forcing psycopg2 to convert the results to unicode.
I am using it so that unicode form data can be transparently
read/written in the DB.

Vlado




More information about the Twisted-Python mailing list