def query_hist_data(
engine: object, sectype: str, symbol: str, datatype: str, barsize: str,
start: datetime=None, end: datetime=None) -> MarketDataBlock:
"""Query database on conditions.
"""
if start is None:
start = pytz.UTC.localize(datetime(1, 1, 1))
if end is None:
end = pytz.UTC.localize(datetime(9999, 12, 31, 23, 59, 59))
table = _gen_sa_table(sectype)
stmt = table.select().where(
and_(
table.c.Symbol == symbol,
table.c.DataType == datatype,
table.c.BarSize == barsize,
table.c.TickerTime.between(
start.astimezone(pytz.UTC), end.astimezone(pytz.UTC))
)
)
async with engine.acquire() as conn:
result = await conn.execute(stmt)
df = pd.DataFrame(list(result), columns=table.columns.keys())
blk = MarketDataBlock(df, tz='UTC')
blk.tz_convert(start.tzinfo)
return blk
评论列表
文章目录