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

Python udfordrende strengkodning

Du bør ikke bruge .format() at inkludere værdier i en sql-forespørgsel. Brug sql-parametre i stedet:

sql += " WHERE provider IN ({}) GROUP BY date ORDER BY date ASC".format(', '.join(['%s'] * len(providers)))

cursor.execute(sql, providers)

hvor providers er den originale liste.

Ideen er at generere en SQL-forespørgsel med in test med SQL-parametersyntaks, der matcher antallet af udbydere på din liste:WHERE provider in (%s, %s) ... for en liste med to udbydere. Ja, MySQLdb sql-parametersyntaksen gentager den gamle python-formateringssyntaks, men er ikke den samme ting.




  1. MySQL LIKE + php sprintf

  2. Sådan aktiveres langsomme forespørgselslogfiler i AWS RDS MySQL

  3. Tips og tricks ved hjælp af revisionslogning til MariaDB

  4. Hvordan forhindrer man automatisk nedlukning af SQL Server LocalDB?