Aby być bardziej szczegółowym ... cursor.execute() Metoda przyjmuje opcjonalny argument, który zawiera wartości, które mają być cytowane i interpolowane do szablonu/instrukcji SQL. NIE robi się tego za pomocą prostego % operator! cursor.execute(some_sql, some_params) jest NIE to samo co cursor.execute(some_sql % some_params)
Python DB-API
określa, że każdy zgodny sterownik/moduł musi zapewniać .paramstyle atrybut, który może być dowolnym z „qmark”, „numeric”, „named”, „format” lub „pyformat” ... tak, aby teoretycznie można było dostosować ciągi zapytań SQL do obsługiwanej postaci poprzez introspekcję i małe mlaskanie. Powinno to być bezpieczniejsze niż próba samodzielnego cytowania i interpolacji wartości w ciągach SQL.
Szczególnie rozbawiło mnie czytanie Ostrzeżenie Nigdy, nigdy, NIGDY nie używaj Pythona ciąg ... interpolacja ... nawet na muszce. w dokumentacji PsycoPG.