Det faktum, at MySQLPython bruger standardstrengformatmarkøren ("%") til variable pladsholdere i forespørgsler kan gøre tingene forvirrende.
Forespørgslernes pladsholder i pythons db-api er for værdier brugt i where
klausuler og insert
og update
sætninger, og er korrekt santiseret / escaped / citeret af db-api'et for at undgå SQL-injektioner osv. Det er ikke meningen, at de skal bruges til tabel- eller feltnavne.
Så hvad du vil her er at bygge din forespørgsel ved hjælp af strengformatering:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Siden db_name[0]
kommer fra en pålidelig kilde, er der ingen sikkerhedsproblemer her.