ORM (SQLAlchemy, Prisma, Entity Framework) zjednodušuje práci s DB. Ale skrývá složitost a generuje neoptimální dotazy.
ORM výhody¶
- Rychlý vývoj, méně kódu
- Type safety
- Automatické migrations
- Protection against SQL injection
- Database-agnostic
Raw SQL výhody¶
- Plná kontrola nad dotazy
- Optimální výkon pro komplexní dotazy
- Window functions, CTE, recursive queries
- Méně abstrakce = méně překvapení
Hybridní přístup¶
SQLAlchemy — ORM pro CRUD¶
user = session.query(User).filter(User.id == 1).first()
Raw SQL pro komplexní dotazy¶
result = session.execute(text(‘’’ WITH monthly AS ( SELECT DATE_TRUNC(‘month’, created_at) as month, COUNT(*) as cnt FROM orders WHERE user_id = :uid GROUP BY 1 ) SELECT month, cnt, AVG(cnt) OVER() as avg_orders FROM monthly ‘’‘), {‘uid’: user_id})
Klíčový takeaway¶
ORM pro CRUD, raw SQL pro analytiku a optimalizaci. Hybridní přístup je pragmatický.
databaseormsqlbest practices