blob: e3c2b92b206fb7b7c20408131184a80500c48479 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import asyncio
import asyncpg
import datetime
import lz4
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())
|