Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Python mysql.connector.errors. %s passado para consulta SQL com aspas


O fato de MySQLPython usar o marcador de formato de string padrão ("%") para marcadores de posição de variáveis ​​em consultas pode tornar as coisas confusas.

O espaço reservado de consultas no db-api do python é para valores usado em where cláusulas e insert e update e são devidamente sanitizados/escapados/citados pelo db-api para evitar injeções de SQL etc. Eles não devem ser usados ​​para nomes de tabelas ou campos.

Então, o que você quer aqui é construir sua consulta usando formatação de string:
sql =  'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)

Desde db_name[0] vem de uma fonte confiável, não há problema de segurança aqui.