Cal Corum
cb89a61196
Fix PostgreSQL upsert column names and CSV null handling
...
- Fix upsert_many() to use column_name for EXCLUDED references
(ForeignKeyField columns end in _id, e.g., batter -> batter_id)
- Add null checks in batting/pitching CSV output for player, team, game
fields to prevent 'NoneType' not subscriptable errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 17:28:40 -06:00
Cal Corum
0cba52cea5
PostgreSQL migration: Complete code preparation phase
...
- Add db_helpers.py with cross-database upsert functions for SQLite/PostgreSQL
- Replace 12 on_conflict_replace() calls with PostgreSQL-compatible upserts
- Add unique indexes: StratPlay(game, play_num), Decision(game, pitcher)
- Add max_length to Team model fields (abbrev, sname, lname)
- Fix boolean comparison in teams.py (== 0/1 to == False/True)
- Create migrate_to_postgres.py with ID-preserving migration logic
- Create audit_sqlite.py for pre-migration data integrity checks
- Add PROJECT_PLAN.json for migration tracking
- Add .secrets/ to .gitignore for credentials
Audit results: 658,963 records across 29 tables, 2,390 orphaned stats (expected)
Based on Major Domo migration lessons learned (33 issues resolved there)
2026-01-25 23:05:54 -06:00