sql >> Databasteknik >  >> RDS >> Mysql

Python MySQLdb-fel - vad orsakar detta

Din kod för att skapa frågan försöker inte citera strängvärdena:

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

Titta på SQL-satsen du skrev ut:

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

Bör inte "kategori" citeras?

Du bör inte komponera en SQL-sats med strängoperationer i första hand. Det är så SQL-injektionssårbarheter uppstår. Istället bör du använda platshållare och låta MySQL-biblioteket hantera dem:

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


  1. SQL-sats för att välja dubbletter av poster som visas mer än 2 gånger

  2. Finns det en postgres NÄRMASTE operatör?

  3. Hur lagrar man lösenord i databasen säkert?

  4. SQL:Sortera efter prioritet, men sätt 0 sist