Rôle du skill
Ce skill fournit une référence technique complète et directement applicable pour résoudre un problème classique de performance : les insertions ligne par ligne dans PostgreSQL via psycopg2 sont extrêmement lentes dès lors qu'une latence réseau est présente (Cloud SQL, RDS, bases distantes). Il documente la solution recommandée — execute_values() de psycopg2.extras — et explique pourquoi les approches naïves (cursor.execute() en boucle, executemany()) ne résolvent pas le problème.
Contenu et structure
Le SKILL.md est entièrement rédigé et fonctionnel. Il couvre :
- le diagnostic des conditions déclenchantes (>100 lignes, latence réseau, migrations longues) ;
- la solution centrale avec
execute_values()et le paramètrepage_size; - des variantes pour les opérations UPSERT avec
ON CONFLICT DO UPDATE; - un exemple de suivi de progression par batch pour les longues migrations ;
- un cas réel documenté : migration de 9 563 utilisateurs de SQLite vers PostgreSQL en ~20 secondes au lieu de ~2,5 heures ;
- un tableau de correspondances syntaxiques SQLite → PostgreSQL.
Contexte dans le repo Divine Mobile
Le projet divinevideo/divine-mobile est une application Flutter décentralisée s'appuyant sur Nostr, avec une persistence locale via Drift (SQLite). Ce skill s'inscrit probablement dans des besoins de migration ou de synchronisation de données côté backend Python vers PostgreSQL, par exemple lors de transferts de données entre la base locale SQLite et une base PostgreSQL distante (API api.divine.video).
Utilisation
Ce skill est destiné à être invoqué par un agent Claude lorsqu'une tâche implique des insertions volumineuses en Python avec psycopg2. L'agent peut s'appuyer directement sur les patterns de code fournis, adapter le nom des tables et colonnes, et ajuster le page_size selon les contraintes mémoire et réseau du contexte cible.