Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysqldb python ucieka? czy %s?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę sprawdzić liczbę aktywnych połączeń sqlalchemy w puli w danym momencie?

  2. SQL :Używanie GROUP BY i MAX na wielu kolumnach

  3. #1064 — Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada Twojej wersji serwera MySQL

  4. Jak stworzyć dynamiczną macierz w php?

  5. Zmień format wyjściowy wyników wiersza poleceń MySQL na CSV