Guide for interacting with the system's PostgreSQL database using the DBManager interface, covering key tables and common patterns.
Data goes in the database. No random CSVs/JSON outside data/ directory.
from db_manager import DBManager, default_db
# Use default connection
df = default_db.fetch_df("SELECT * FROM unified_games WHERE sport = 'nba'")
# Or create custom connection
db = DBManager(connection_string="postgresql://user:pass@host:5432/db")
| Table | Purpose |
|---|---|
unified_games | All games across sports |
game_odds | Kalshi/sportsbook odds |
placed_bets |
| Bet history and results |
elo_ratings | Historical Elo snapshots |
portfolio_snapshots | Portfolio value over time |
df = default_db.fetch_df("""
SELECT * FROM unified_games
WHERE sport = :sport AND game_date >= :start_date
""", {"sport": "nba", "start_date": "2024-01-01"})
default_db.execute("""
UPDATE placed_bets SET status = 'won'
WHERE bet_id = :bet_id
""", {"bet_id": "123"})
df.to_sql("unified_games", default_db.get_engine(),
if_exists="append", index=False)
default_db.execute("""
INSERT INTO game_odds (game_id, source, yes_price)
VALUES (:game_id, :source, :yes_price)
ON CONFLICT (game_id, source)
DO UPDATE SET yes_price = EXCLUDED.yes_price
""", params)
From environment or docker-compose:
localhost5432airflowairflowairflowAlways validate before commits:
from data_validation import validate_nba_data
report = validate_nba_data()
if not report.is_valid:
raise ValueError(f"Validation failed: {report.errors}")
plugins/db_manager.py - DBManager classplugins/data_validation.py - Validation utilitiesplugins/database_schema_manager.py - Schema definitionsSpring Boot中的JPA/Hibernate模式,用于实体设计、关系处理、查询优化、事务管理、审计、索引、分页和连接池。