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.