是否可以从Python(3.4)对Microsoft SQL Server执行异步查询,即在asyncio事件循环的上下文中?
以下是骨架asyncio程序,其中(异步)SQL查询应该适合do_it
函数:
import asyncio
import contextlib
@asyncio.coroutine
def do_it():
# TODO: Make an asynchronous MS SQL query, but how??
fut = asyncio.Future()
fut.set_result(None)
return fut
with contextlib.closing(asyncio.SelectorEventLoop()) as loop:
asyncio.set_event_loop(loop)
loop.run_until_complete(do_it())
print('Finished')
答案 0 :(得分:2)
目前只有通过aiopg库支持PostgreSQL本地asyncio。
但您可以通过loop.run_in_executor()
运行对MSSQL的同步调用。
答案 1 :(得分:2)
到目前为止,我发现的一个选项是商业产品mxODBC Connect,不幸的是它花费了数百美元。通过向SQL Server提供代理服务器,它能够支持异步调用。据说异步支持是通过gevent实现的,所以我不知道它是否适合asyncio。从Python的ODBC wiki开始,mxODBC是唯一列出异步支持的产品。
答案 2 :(得分:0)
我讨厌“不要那样做”的答案,但是the article by Mike Bayer, the creator of SQLAlchemy让我想到的确如此:
“当谈到刻板的数据库逻辑时,使用它与传统的线程方法没有任何优势,你可能会期望性能中的小到中等降低,而不是的增加强> “