Mysql
 sql >> Base de données >  >> RDS >> Mysql

requête de récupération python mysql

Cela confond presque tous ceux qui travaillent avec MySQLDB. Vous transmettez des arguments à la fonction d'exécution, sans effectuer de substitution de chaîne python. Le %s dans la chaîne de requête est utilisé plus comme une instruction préparée que comme une substitution de chaîne python. Cela empêche également l'injection SQL car MySQLDB fera l'échappement pour vous. Comme vous l'aviez avant (en utilisant % et substitution de chaîne), vous êtes vulnérable à l'injection.

  1. N'utilisez pas de guillemets. MySQLDB les placera là (si nécessaire).
  2. Utilisez un , au lieu d'un %. Encore une fois, vous passez un tuple comme argument à la fonction d'exécution.

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