sql >> Database >  >> RDS >> Mysql

Python uitdagende tekenreekscodering

Gebruik .format() . niet om waarden in een sql-query op te nemen. Gebruik in plaats daarvan sql-parameters:

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

cursor.execute(sql, providers)

waar providers is de originele lijst.

Het idee is om een ​​SQL-query te genereren met de in test met behulp van SQL-parametersyntaxis die overeenkomt met het aantal providers in uw lijst:WHERE provider in (%s, %s) ... voor een lijst met twee aanbieders. Ja, de syntaxis van de MySQLdb sql-parameter weerspiegelt de oude stijl van de python-opmaaksyntaxis, maar is niet hetzelfde.




  1. INSERT INTO...SELECT voor alle MySQL-kolommen

  2. Waarom stopt de MySQL Unix-tijd voor de 32-bits niet-ondertekende integer-limiet?

  3. Wat is het SYSNAME-gegevenstype in SQL Server?

  4. Hoe een tijdelijke kolom te gebruiken in de waar-clausule?