psycopg2-like-percent-escape

Par divinevideo · divine-mobile

Skill documentant la résolution du conflit entre les wildcards LIKE et les placeholders psycopg2, pour les requêtes PostgreSQL en Python dans le projet Divine Mobile.

npx skills add https://github.com/divinevideo/divine-mobile --skill psycopg2-like-percent-escape

psycopg2 LIKE Clause Percent Sign Escaping

Ce skill est une référence technique destinée aux agents et développeurs travaillant sur le repo divinevideo/divine-mobile. Il documente un problème classique de psycopg2 : le conflit entre le caractère % utilisé comme wildcard SQL dans les clauses LIKE et le même caractère employé comme marqueur de substitution de paramètres (%s) par psycopg2. Ce conflit produit une IndexError: tuple index out of range difficile à diagnostiquer.

Contenu du skill

Contrairement à un simple squelette ou placeholder, ce skill est entièrement rédigé et opérationnel. Il expose le problème, les conditions déclencheuses typiques, puis propose trois solutions graduées : l'échappement par doublement (%%), le passage du pattern LIKE directement comme paramètre (approche recommandée), et l'usage du module psycopg2.sql pour les cas de construction SQL dynamique. Des exemples de code avant/après illustrent chaque option.

Contexte dans Divine Mobile

Le projet Divine Mobile est une application Flutter décentralisée s'appuyant sur Nostr, avec une persistence locale via Drift (SQLite). Des scripts ou services backend Python interagissent probablement avec PostgreSQL via psycopg2, notamment pour des opérations de migration, d'analyse ou d'administration des données vidéo héritées (références à vine.co dans les exemples). Ce skill capture une connaissance utile pour quiconque écrit ou maintient ces couches d'accès aux données.

Utilisation

Lorsqu'un agent ou un développeur rencontre une IndexError sur un cursor.execute() contenant une clause LIKE, il peut invoquer ce skill pour obtenir immédiatement le diagnostic et la correction appropriée, sans avoir à parcourir la documentation psycopg2. Les notes en fin de document précisent également les cas limites (recherche de % littéral, wildcard _, différences avec psycopg3 et Django ORM).

Skills similaires