import asyncio
import aioodbc
from concurrent.futures import ThreadPoolExecutor
loop = asyncio.get_event_loop()
async def odbc_insert_worker(conn, value):
async with conn.cursor() as cur:
await cur.execute('insert into async_testing values (?)', value)
async def db_main(loop, values):
dsn="foo"
values = list(values)
async with aioodbc.create_pool(dsn=dsn, loop=loop, executor=ThreadPoolExecutor(max_workers=3), autocommit=True) as pool:
tasks = [do_insert(pool, value) for value in values]
await asyncio.gather(*tasks)
async def do_insert(pool, value):
async with pool.acquire() as conn:
await odbc_insert_worker(conn, value)
fmt_vals = range(0,1000)
loop.run_until_complete(db_main(loop, fmt_vals))