Mysql
 sql >> Database >  >> RDS >> Mysql

python query di recupero di mysql

Questo confonde quasi tutti coloro che lavorano con MySQLDB. Stai passando argomenti alla funzione di esecuzione, non eseguendo la sostituzione di stringhe Python. Il %s nella stringa di query viene utilizzato più come un'istruzione preparata che come sostituzione di una stringa python. Ciò impedisce anche l'iniezione di SQL poiché MySQLDB eseguirà l'escape per te. Come prima (usando % e sostituzione di stringhe), sei vulnerabile all'iniezione.

  1. Non usare virgolette. MySQLDB li metterà lì (se necessario).
  2. Usa un , invece di un %. Di nuovo, stai passando una tupla come argomento alla funzione di esecuzione.

    self.dbc.execute("select * from car where reg=%s" , (reg,))