除了Twistar之外,还有其他异步 Python ORM吗?
我正在寻找构建在 tornado 之上的用于非阻塞 API 的轻量级 ORM。当然,我可以使用 momoko 编写原始 SQL 查询,但我想使用对象。
是的!查看peewee和peewee-async扩展。免责声明:扩展目前仅适用于 PostgreSQL,我是扩展的作者 :)
它不是专门为 Tornado 设计的,但 Tornado 可以在异步事件循环上运行。
5年了,变化很大。我们将GINO编写为基于asyncpg和SQLAlchemy 核心的轻量级 ORM 。它仅适用于 asyncio 和 PostgreSQL。GINO 称为“GINO 不是 ORM”,因为它几乎没有应用任何常见的 ORM 模式,以便明确和简单。
看看 Tortoise ORM
它的目标是成为一个全功能的ORM
灵感Django syntax
,但仅限于 asycnio。由于Tornado 5.0
在 asyncio 上运行,它应该可以正常工作。
不存在。唯一可以考虑接近轻量级的 ORM 是PeeWee,这不是异步的。ORM 很难写,更难写好。它需要有一个漂亮、干净的 API,暴露底层数据库的许多特性,并且高效。一项艰巨的任务!
Python 的 ORM 并不多,异步的甚至更少。对不起。
如果使用 mongo,您可以查看 Asyncmongo(不是 orm,但让您访问您的数据异步) https://github.com/bitly/asyncmongo
如果感兴趣,请参阅此网络研讨会的视频和幻灯片:“使用 Python 和 Tornado 的异步 MongoDB” http://www.10gen.com/presentations/webinar/Asynchronous-MongoDB-with-Python-and-Tornado
您可能想看看Monguo,这是一个“功能齐全的异步 MongoDB ORM,带有用于 Tornado 应用程序的电机驱动程序”,正如它所描述的那样。
你可能想看看 umysqldb( https://github.com/hongqn/umysqldb ),一个 MySQLdb 兼容的 Ultramysql 包装器。ultramysql 通过猴子补丁与 gevent 兼容。