有没有人知道适用于Python的异步MySQL库?
我一直在研究Python的非阻塞服务器,比如tornado、twisted等等。不过,如果数据库的连接不是非阻塞的,那很多好处似乎就没了。有没有人知道有没有项目可以解决这个问题?(就像node.js那样实现非阻塞)
补充说明:我澄清了一下我的问题
3 个回答
1
你可以通过在一个单独的线程中执行数据库查询来实现这个功能。使用Twisted框架时,你可以用 deferToThread()
或 deferToThreadPool()
来做到这一点(具体可以查看API文档1)。
4
来看看我们的新项目 txMySQL,它现在可以做到这一点。
这是一个原生的异步实现,使用的是二进制的MySQL协议。
13
你可以使用Twisted的ADBAPI来封装一个同步的数据库API实现。
比如:
from twisted.internet import reactor
from twisted.enterprise import adbapi
def result(rows):
for row in rows:
print row
reactor.stop()
def fail(err):
err.printDetailedTraceback()
reactor.stop()
pool = adbapi.ConnectionPool('sqlite3', 'animals.db')
d = pool.runQuery('SELECT * FROM animals', ())
d.addCallbacks(result, fail)
reactor.run()