[Twisted-Python] Case for an Async MySQL Driver?
L. Daniel Burr
ldanielburr at mac.com
Thu Oct 28 15:12:23 MDT 2004
Seun Osewa wrote:
>Here are some ideas for an async MySQL 'driver' for Twisted:
[snip description of API]
>This format allows the user to send an unlimited number of queries to
>be run together, thus limiting the number of callbacks necessary for a
>program requiring many small interactions with the database. "begin"
>and "end" will count as an example. This minimalistic API also allows
>more advanced (twisted.enterprise style) interfaces to be built on top
>of it.
I think that this is a good idea, but I think it would be far better if you described your API in terms of the twisted.enterprise.adbapi API which exists today.
Example:
from twisted.enterprise import adbapi
dbpool = adbapi.NonBlockingConnectionPool(
MySQLProtocolFactory,
connectionInfo,
cp_min=1,
cp_max=5
)
queries = ('SELECT 1 FROM DUAL', 'UPDATE Foo WHERE bar = baz')
for query in queries:
d = dbpool.runQuery(query)
d.addErrback(_onFailure)
d.addCallback(_onSuccess)
The effort needed to make this proposed asynchronous db protocol work with adbapi would be pretty minor, I think.
Tell you what: If somebody implements this MySQL async protocol, I'll create a patch to make adbapi work with it. Sound good?
Naz
More information about the Twisted-Python
mailing list