我的印象是,通过 SQLAlchemy 调用数据库会阻塞并且不适合在同步代码以外的任何地方使用。我是正确的(我希望我不是!)还是有办法将其配置为非阻塞?
问问题
16831 次
3 回答
29
您可以使用 gevent 以非阻塞方式使用SQLA。这是一个使用 psycopg2 的示例,使用 psycopg2 的协程支持:
https://bitbucket.org/zzzeek/green_sqla/
我也听说人们对pymysql使用相同的想法。由于 pymysql 是纯 Python 并使用套接字库,gevent 将套接字库修补为异步。
于 2012-04-18T19:00:02.150 回答
2
在 asyncio 的上下文中,如果没有 greenlet 的帮助,答案是否定的。
但是,可以在 asyncio 中仅使用 SQLAlchemy 的一部分。请在GINO 项目中找到示例,其中我们仅使用没有引擎和完整执行上下文的 SQLAlchemy 核心在 asyncio 中制作简单的 ORM。
于 2017-08-12T03:59:08.960 回答