psycopg2-batch-insert-optimization

Par divinevideo · divine-mobile

Skill opérationnel documentant l'optimisation des insertions PostgreSQL en masse via psycopg2.extras.execute_values(), utilisé dans le projet Divine Mobile pour les migrations de données.

npx skills add https://github.com/divinevideo/divine-mobile --skill psycopg2-batch-insert-optimization

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ètre page_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.

Skills similaires