""" 实时数据模型 """ from datetime import datetime from sqlalchemy import Column, Integer, String, BigInteger, Numeric, DateTime from app.db.base import Base class RealtimeSnapshot(Base): """实时快照数据表""" __tablename__ = "realtime_snapshot" id = Column(BigInteger, primary_key=True, index=True) code = Column(String(20), nullable=False, index=True) security_type = Column(String(20), nullable=False) # stock, future, index, etf, kzz, option trade_time = Column(DateTime, nullable=False, index=True) # 价格数据 pre_close = Column(Numeric(12, 4)) last = Column(Numeric(12, 4)) open = Column(Numeric(12, 4)) high = Column(Numeric(12, 4)) low = Column(Numeric(12, 4)) close = Column(Numeric(12, 4)) volume = Column(BigInteger) amount = Column(Numeric(18, 4)) # 盘口数据 - 卖盘 ask_price1 = Column(Numeric(12, 4)) ask_price2 = Column(Numeric(12, 4)) ask_price3 = Column(Numeric(12, 4)) ask_price4 = Column(Numeric(12, 4)) ask_price5 = Column(Numeric(12, 4)) ask_volume1 = Column(Integer) ask_volume2 = Column(Integer) ask_volume3 = Column(Integer) ask_volume4 = Column(Integer) ask_volume5 = Column(Integer) # 盘口数据 - 买盘 bid_price1 = Column(Numeric(12, 4)) bid_price2 = Column(Numeric(12, 4)) bid_price3 = Column(Numeric(12, 4)) bid_price4 = Column(Numeric(12, 4)) bid_price5 = Column(Numeric(12, 4)) bid_volume1 = Column(Integer) bid_volume2 = Column(Integer) bid_volume3 = Column(Integer) bid_volume4 = Column(Integer) bid_volume5 = Column(Integer) # 期货特有字段 settle = Column(Numeric(12, 4)) open_interest = Column(BigInteger) pre_settle = Column(Numeric(12, 4)) average_price = Column(Numeric(12, 4)) trading_phase_code = Column(String(10)) created_at = Column(DateTime(timezone=True), default=datetime.utcnow) expires_at = Column(DateTime(timezone=True), nullable=False, index=True)