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

Codificação de string desafiadora do Python


Você não deve usar .format() para incluir valores em uma consulta sql. Use parâmetros sql em vez disso:
sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))

cursor.execute(sql, providers)

onde providers é a lista original.

A ideia é gerar uma consulta SQL com o in teste usando a sintaxe do parâmetro SQL que corresponde ao número de provedores em sua lista:WHERE provider in (%s, %s) ... para uma lista de dois provedores. Sim, a sintaxe do parâmetro MySQLdb sql ecoa a sintaxe de formatação python de estilo antigo, mas não é a mesma coisa.