I am using Twisted adbapi, psycopg2 and PostgreSQL which works really great.

Now, there are 2 features I'd like to use in this context, which I've been
using before without Twisted.

I'm missing those.

Would be glad for any hints ..

If there is work to do to make those features happen, and it's doable for
non-Twisted-gods, then I'd also be willing to invest time/effort ...

Thanks,
Tobias



LISTEN/NOTIFY
============

Is a Postgres>=9 feature which allows one to asynchronously notify a database 
client
from _within_ the database (i.e. from pgPLSQL).

http://www.postgresql.org/docs/9.1/static/sql-notify.html
http://initd.org/psycopg/docs/advanced.html#asynchronous-notifications

On the Python side, it'll do a select() on the TCP underlying the connection to 
Postgres.

adbapi assumes DBAPI, and above is a non-standard extension.

Now, what would be a sensible approach to use that with Twisted?

Own thread?
How do I integrate that into a standard Twisted application service hierarchy?
Or somehow extend adbapi?


psycopg2.extras.RealDictCursor
========================

We have a convention that all database access must be exclusively via
stored procedures with all IN and all OUT parameters named.

Outside the context of Twisted, we use that in conjunction with

# Real Dict Cursor (returns a Dict which can be referenced via named bracket 
access, or offset)

dict_cursor = db.cursor(cursor_factory = psycopg2.extras.RealDictCursor)
dict_cursor.execute("SELECT first_name, last_name, email FROM 
user.get_user(%s)", (user_id,))
my_row = dict_cursor.fetchone()

=>

{'first_name': 'John', 'last_name': 'Doe', 'email': 'j...@doe.com'}

Is there a way to do something like this when using

self.dbpool.runInteraction

or otherwise?

Setting the "cursor factory" to be used?

On the other hand, the txn given to the fun provided with runInteraction 
already is somehow dressed up, right?


_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to