Het feit dat MySQLPython de standaard tekenreeksopmaakmarkering ("%") gebruikt voor tijdelijke aanduidingen voor variabelen in zoekopdrachten kan de zaken verwarrend maken.
De tijdelijke aanduiding voor query's in de db-api van python zijn voor waarden gebruikt in where clausules en insert en update statements, en zijn correct gesaneerd / escaped / geciteerd door de db-api om SQL-injecties enz. te voorkomen. Ze mogen niet worden gebruikt voor tabel- of veldnamen.
Dus, wat u hier wilt, is uw zoekopdracht bouwen met behulp van tekenreeksopmaak:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Sinds db_name[0] afkomstig is van een vertrouwde bron, er is hier geen beveiligingsprobleem.