Abych byl konkrétnější... cursor.execute()
metoda přebírá volitelný argument, který obsahuje hodnoty, které mají být citovány a interpolovány do šablony/příkazu SQL. To se NEDĚLÁ pomocí jednoduchého %
operátor! cursor.execute(some_sql, some_params)
je NE stejné jako cursor.execute(some_sql % some_params)
Python DB-API
určuje, že jakýkoli vyhovující ovladač/modul musí poskytovat .paramstyle
atributem, který může být libovolný z 'qmark', 'numeric', 'named', 'format' nebo 'pyformat' ... takže teoreticky lze pomocí introspekce a malé žvaní. To by mělo být stále bezpečnější, než se pokoušet sami citovat a interpolovat hodnoty do vašich řetězců SQL.
Obzvláště mě pobavilo čtení Varování Nikdy, nikdy, NIKDY nepoužívejte Python řetězec ... interpolace ... Dokonce ani namířenou zbraní. v dokumentech PsycoPG.