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

Błąd Pythona MySQLdb — co to powoduje

Twój kod do utworzenia zapytania nie próbuje cytować wartości ciągu:

cmd = "INSERT INTO resulttest (category, value, timestamp) VALUES (" + key + ", " + str(value) + ", " + str(timestamp) + ")"

Spójrz na wydrukowaną instrukcję SQL:

INSERT INTO resulttest (category, value, timestamp) VALUES (composed, 2, 1343186948.8)

Czy nie powinno być cytowane „kategoria”?

Przede wszystkim nie powinieneś tworzyć instrukcji SQL z operacjami na ciągach. W ten sposób powstają luki typu SQL injection. Zamiast tego powinieneś użyć symboli zastępczych i pozwolić, aby biblioteka MySQL poradziła sobie z nimi:

c.execute(
    "INSERT INTO resulttest (category, value, timestamp) VALUES (?, ?, ?)", 
    (key, value, timestamp)
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Klasa połączenia PDO / kod i projekt klasy

  2. Utwórz bazę danych MySQL za pomocą Pythona

  3. Zapytanie R RMySQL deformuje japońskie znaki

  4. Jakie znaczenie ma nazwa indeksu podczas tworzenia indeksu w MySQL?

  5. Mapowanie Doctrine 2 odwołujące się do unikalnego klucza