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

Python mysql.connector.errors. %s passé à la requête SQL avec des guillemets

Le fait que MySQLPython utilise le marqueur de format de chaîne standard ("%") pour les espaces réservés de variables dans les requêtes peut rendre les choses confuses.

L'espace réservé aux requêtes dans la db-api de python concerne les valeurs utilisé dans where clauses et insert et update instructions, et sont correctement santized / échappés / cités par le db-api pour éviter les injections SQL, etc. Ils ne sont pas censés être utilisés pour les noms de table ou de champ.

Donc, ce que vous voulez ici, c'est construire votre requête en utilisant le formatage de chaîne :

sql =  'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)

Depuis db_name[0] provient d'une source fiable, il n'y a aucun problème de sécurité ici.