有没有人知道适用于Python的异步MySQL库?

11 投票
3 回答
4835 浏览
提问于 2025-04-15 16:58

我一直在研究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()

撰写回答