SuperAPI AI 工具集

database-sqlite

数据与分析

查看项目

更新于 10-16 01:38

技能介绍

用途:为 PolyFlup 项目提供 SQLite 数据库的规范用法,包括连接管理、迁移机制和常用查询模式。

连接管理:始终使用 db_connection() 上下文管理器,示例:from src.data.db_connection import db_connection;with db_connection() as conn: c = conn.cursor();c.execute("SELECT * FROM trades")。成功时自动提交,禁止手动调用 conn.commit()。在已有事务中调用写入函数(如 execute_trade)时必须传入当前活动的 cursor,以防死锁。

迁移系统:通过 schema_version 表跟踪版本。新增迁移需在 src/data/migrations.py 中创建迁移函数,注册到 MIGRATIONS 列表,并更新 src/data/database.py 的基础模式。规则:创建前检查列/索引是否存在;迁移必须幂等;不得删除或修改已有迁移。

模式概览:主表为 trades。核心字段 id、timestamp、symbol、side、entry_price、size、bet_usd、edge;订单跟踪 order_id、order_status、limit_sell_order_id、scale_in_order_id;持仓管理 scaled_in、is_reversal、target_price、reversal_triggered、reversal_triggered_at;结算 settled、settled_at、exited_early、final_outcome、exit_price、pnl_usd、roi_pct;时间 window_start、window_end、last_scale_in_at;市场数据 slug、token_id、p_yes、best_bid、best_ask、imbalance、funding_bias;贝叶斯对比(v0.5.0+)additive_confidence、additive_bias、bayesian_confidence、bayesian_bias、market_prior_p_up。

常用模式:查询未结算且未提前退出的持仓,条件为 settled = 0 AND exited_early = 0 AND datetime(window_end) > datetime(?)。加仓后更新 size、bet_usd、scaled_in、last_scale_in_at。结算时更新 settled、exited_early、exit_price、pnl_usd、roi_pct、settled_at。

WAL 模式:初始化时启用 PRAGMA journal_mode=WAL,提升并发,允许写入期间并发读取。

迁移历史:007(v0.5.0)新增贝叶斯置信度对比列;006(v0.4.x)新增原始信号分列;005 新增 last_scale_in_at;004 新增 reversal_triggered_at;003 新增 reversal_triggered;002 新增时间戳验证;001 新增 scale_in_order_id。