Debugging ORM Queries
References
| Language | ORMs | Reference | |----------|------|-----------| | Node.js | Sequelize, Prisma, TypeORM | references/nodejs.md | | Go | GORM, sqlc, sqlx, ent | references/golang.md | | Python | SQLAlchemy, Django, Peewee | references/python.md | | Anti-patterns | N+1, indexes, pagination | references/anti_patterns.md |
Scripts
# Pretty-print SQL
python scripts/sql_formatter.py "SELECT..."
# Detect N+1, missing WHERE, duplicates from log file
python scripts/query_analyzer.py queries.log [--json]
# Parse EXPLAIN output (PostgreSQL or MySQL)
psql -c "EXPLAIN ANALYZE ..." | python scripts/explain_parser.py --postgres
mysql -e "EXPLAIN FORMAT=JSON ..." | python scripts/explain_parser.py --mysql
# Node.js request-scoped query tracking (see script for setup)
# Integrates with Sequelize, Prisma, TypeORM
Quick Patterns
Enable logging: Check reference for ORM-specific config (usually logging: true or echo=True)
ORM → SQL: Enable logging, run query, capture output
SQL → ORM: Map clauses to methods:
SELECT columns→ specify fields/attributesWHERE→where/filterwith operatorsJOIN→include/preload/prefetch_relatedORDER BY→order/orderByLIMIT/OFFSET→limit/offsetor cursor-based
Performance issues: Run query_analyzer.py on logs, check anti_patterns.md for solutions