是否可以从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')
4条答案
按热度按时间izkcnapc1#
目前只有PostgreSQL原生asyncio支持通过aiopg库。
但是您可以通过
loop.run_in_executor()
运行对MSSQL的同步调用。ryevplcw2#
到目前为止,我找到的一个选择是商业产品mxODBC Connect,不幸的是,它需要花费数百美元。通过为SQL Server提供代理服务器,它能够支持异步调用。据说异步支持是通过gevent实现的,所以我不知道它是否适合asyncio。从Python的ODBC wiki来看,mxODBC是唯一列出的支持异步的产品。
suzh9iv83#
更新:这个答案失去了它的用处,因为:
来自年轻人的回答:
我讨厌“不要这样做”的答案,但the article by Mike Bayer, the creator of SQLAlchemy让我想到了这一点:
cyvaqqii4#
我会说使用从pyodbc移植的aioodbc在我目前的项目中工作得很好!:)