如图,由于网格量化,抄底策略,合约策略等等,不在同一张数据表里,它们都是各自互不关联的表,如何按照时间倒叙排序呢,这里用到 union_all 这个用法,代码如下:
result1 = db.session.query(BottomStrategy.id, BottomStrategy.strategy_type,BottomStrategy.status,
BottomStrategy.strategy_name, BottomStrategy.create_time,
BottomStrategy.symbol_id, BottomStrategy.strategy_earn,
BottomStrategy.strategy_earn_percent, BottomStrategy.total_earn,
BottomStrategy.total_earn_percent).filter_by(phone=user.phone)
result2 = db.session.query(GridStrategy.id, GridStrategy.strategy_type,GridStrategy.status,
GridStrategy.strategy_name, GridStrategy.create_time,
GridStrategy.symbol_id, GridStrategy.strategy_earn,
GridStrategy.strategy_earn_percent, GridStrategy.total_earn,
GridStrategy.total_earn_percent).filter_by(phone=user.phone)
if sort_by == 'default': # 默认排序,按照时间倒叙
# paginate(page, num,False) 是flask的分页用法,第几页每页几条数据,查询不到不报错
pagination = result1.union_all(result2).order_by(BottomStrategy.create_time.desc(),
GridStrategy.create_time.desc()).filter_by(status=strategy_status).paginate(page, num,
False)
elif sort_by == 'total_earn': # 按照收益排序
pagination = result1.union_all(result2).order_by(BottomStrategy.total_earn.desc(),
GridStrategy.total_earn.desc()).filter_by(status=strategy_status).paginate(page, num,
False)