Per essere più precisi... il cursor.execute()
accetta un argomento facoltativo che contiene valori da citare e interpolare nel modello/istruzione SQL. Questo NON viene fatto con un semplice %
operatore! cursor.execute(some_sql, some_params)
è NON lo stesso di cursor.execute(some_sql % some_params)
Python DB-API
specifica che qualsiasi driver/modulo conforme deve fornire un .paramstyle
attributo che può essere uno qualsiasi tra 'qmark', 'numeric', 'named', 'format' o 'pyformat'... in modo che si possa, in teoria, adattare le stringhe di query SQL al modulo supportato attraverso l'introspezione e un piccolo sgranocchiare. Questo dovrebbe essere comunque più sicuro che provare a citare e interpolare i valori nelle tue stringhe SQL da solo.
Mi ha particolarmente divertito leggere Attenzione Mai, mai, MAI usare Python stringa... interpolazione... Nemmeno sotto tiro. nei documenti di PsycoPG.