Fakt, że MySQLPython używa standardowego znacznika formatu ciągu znaków ("%") dla zmiennych zastępczych w zapytaniach, może być mylący.
Symbole zastępcze zapytań w db-api Pythona dotyczą wartości używane w where
klauzule i insert
i update
instrukcji i są odpowiednio usankcjonowane / zmienione / cytowane przez db-api, aby uniknąć wstrzyknięć SQL itp. Nie powinny być używane do nazw tabel lub pól.
Więc to, czego chcesz tutaj, to zbudowanie zapytania przy użyciu formatowania ciągu:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Od db_name[0]
pochodzi z zaufanego źródła, tutaj nie ma problemu z bezpieczeństwem.