Mysql
 sql >> Database >  >> RDS >> Mysql

Python mysql.connector.errors. %s passato alla query SQL tra virgolette

Il fatto che MySQLPython utilizzi l'indicatore di formato stringa standard ("%") per i segnaposto delle variabili nelle query può creare confusione.

Il segnaposto delle query in db-api di Python è per valori utilizzato in where clausole e insert e update istruzioni e sono adeguatamente santificati/sfuggiti/citati da db-api per evitare iniezioni SQL, ecc. Non dovrebbero essere usati per nomi di tabelle o campi.

Quindi, quello che vuoi qui è costruire la tua query usando la formattazione delle stringhe:

sql =  'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)

Dal momento che db_name[0] proviene da una fonte attendibile, non ci sono problemi di sicurezza qui.