VeighNa量化社区
你的开源社区量化交易平台
zhanxh911's Avatar
Member
离线
3 帖子
声望: 0

peewee查询数据库返回数据如何快速高效转Dataframe的方法,求大家指点

找到方法了

  1. BaseDatabase 增加接口
    def query_dataframe(self, symbol: str, exchange: Exchange, interval: Interval):
     pass
  2. 实现类中添加pandas
    import pandas as pd
  3. 方法实现

     def query_dataframe(self, symbol: str, exchange: Exchange, interval: Interval):
         s: ModelSelect = DbBarOverview.select().where(
             (DbBarOverview.symbol == symbol) & (DbBarOverview.exchange == exchange.value) & (
                         DbBarOverview.interval == interval.value))
         # print(s.sql())
         overviews: List[BarOverview] = []
         for overview in s:
             overview.exchange = Exchange(overview.exchange)
             overview.interval = Interval(overview.interval)
             overviews.append(overview)
    
         if len(overviews) < 1:
             return None
    
         code = overviews[0]
         ss: ModelSelect = (
             DbBarData.select().where(
                 (DbBarData.symbol == symbol)
                 & (DbBarData.exchange == exchange.value)
                 & (DbBarData.interval == interval.value)
                 & (DbBarData.datetime >= code.start)
                 & (DbBarData.datetime <= code.end)
             ).order_by(DbBarData.datetime)
         )
         sqlpm = ss.sql()
         df = pd.read_sql(sqlpm[0], db.connection(), params=sqlpm[1])
         return df

peewee创建mysql数据库Datetime无法精确到毫秒,保存tick数据会丢失记录。
论坛有人直接修改了peewee代码来实现了,查了peewee资料也没有找到正确的方法创建数据库表格时保证Datetime精确到毫秒。
有没有哪个大哥知道,不通过修改peewee代码可以解决的方式。

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】