För att vara mer specifik ... cursor.execute()
Metoden tar ett valfritt argument som innehåller värden som ska citeras och interpoleras i SQL-mallen/satsen. Detta görs INTE med en enkel %
operatör! cursor.execute(some_sql, some_params)
är INTE samma som cursor.execute(some_sql % some_params)
Python DB-API
anger att alla kompatibla drivrutiner/moduler måste tillhandahålla en .paramstyle
attribut som kan vara någon av 'qmark', 'numeric', 'named', 'format' eller 'pyformat' ... så att man i teorin skulle kunna anpassa dina SQL-frågesträngar till den form som stöds genom introspektion och en lite mumsande. Detta borde fortfarande vara säkrare än att själv försöka citera och interpolera värden i dina SQL-strängar.
Jag var särskilt road av att läsa Varning Använd aldrig, aldrig, ALDRIG Python sträng ... interpolation ... Inte ens under pistolhot. i PsycoPG-dokumenten.