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

Python mysql.connector.errors. %s videregivet til SQL-forespørgsel med anførselstegn

Det faktum, at MySQLPython bruger standardstrengformatmarkøren ("%") til variable pladsholdere i forespørgsler kan gøre tingene forvirrende.

Forespørgslernes pladsholder i pythons db-api er for værdier brugt i where klausuler og insert og update sætninger, og er korrekt santiseret / escaped / citeret af db-api'et for at undgå SQL-injektioner osv. Det er ikke meningen, at de skal bruges til tabel- eller feltnavne.

Så hvad du vil her er at bygge din forespørgsel ved hjælp af strengformatering:

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

Siden db_name[0] kommer fra en pålidelig kilde, er der ingen sikkerhedsproblemer her.




  1. Avancerede sum-aggregerede felter

  2. SQL-forespørgsel til at hente rækker, hvor en værdi er til stede i et kommasepareret felt

  3. Hvordan afbrydes forbindelser TCP/IP ved keepalive postgreSQL uden at ændre noget i registret?

  4. SQLite VAKUUM