Die Tatsache, dass MySQLPython die Standard-String-Formatmarkierung ("%") für Variablenplatzhalter in Abfragen verwendet, kann die Dinge verwirren.
Die Platzhalter für Abfragen in der db-api von Python sind für Werte verwendet in wo
Klauseln und insert
und aktualisieren
Anweisungen und werden von der db-api ordnungsgemäß gesantisiert / maskiert / in Anführungszeichen gesetzt, um SQL-Injektionen usw. zu vermeiden. Sie sollten nicht für Tabellen- oder Feldnamen verwendet werden.
Was Sie hier also wollen, ist, Ihre Abfrage mit Zeichenfolgenformatierung zu erstellen:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Seit db_name[0][code> stammt aus einer vertrauenswürdigen Quelle, hier liegt kein Sicherheitsproblem vor.