sql >> Databasteknik >  >> RDS >> Mysql

Python mysql.connector.errors. %s skickas till SQL-fråga med citattecken

Det faktum att MySQLPython använder standardsträngformatmarkören ("%") för variabelplatshållare i frågor kan göra saker förvirrande.

Frågornas platshållare i pythons db-api är för värden används i where satser och insert och update satser, och är korrekt santiserade / escaped / citerade av db-api för att undvika SQL-injektioner etc. De är inte tänkta att användas för tabell- eller fältnamn.

Så vad du vill här är att bygga din fråga med strängformatering:

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

Sedan db_name[0] kommer från en pålitlig källa, det finns inga säkerhetsproblem här.




  1. PostgreSQL unnest med tom array

  2. Robust metod för att skapa SQL-frågor programmatiskt

  3. Hur man formaterar tid till '2:34 timmar', '0:34 timmar' etc i MySQL

  4. Hur laddar din Oracle ODBC-drivrutin Oracle-klienten?