import asyncio import asyncpg import datetime import lz4.block from pyisda.curve import YieldCurve import uvloop from asyncio_extras import async_contextmanager @async_contextmanager async def dbconn(): conn = await asyncpg.connect(user='serenitas_user', password='Serenitas1', database='serenitasdb', host='debian') yield conn await conn.close() async def get_singlenames_quotes_async(con, indexname, date): stmt = await con.prepare('SELECT * FROM curve_quotes($1, $2)') async with con.transaction(): # Postgres requires non-scrollable cursors to be created # and used in a transaction. async for record in stmt.cursor(indexname, date): print(record) async def get_curves(con, currency="USD", date=None): async with con.transaction(): return {record['effective_date']: YieldCurve.from_bytes(lz4.block.decompress(record['curve'])) async for record in con.cursor("SELECT * FROM {}_curves".format(currency))} async def main(): async with dbconn() as con: return await get_curves(con) if __name__ == "__main__": asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) loop = asyncio.get_event_loop() pomme = loop.run_until_complete(main())