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.