sql >> Database >  >> RDS >> Mysql

Python mysql.connector.fouten. %s doorgegeven aan SQL-query met aanhalingstekens

Het feit dat MySQLPython de standaard tekenreeksopmaakmarkering ("%") gebruikt voor tijdelijke aanduidingen voor variabelen in zoekopdrachten kan de zaken verwarrend maken.

De tijdelijke aanduiding voor query's in de db-api van python zijn voor waarden gebruikt in where clausules en insert en update statements, en zijn correct gesaneerd / escaped / geciteerd door de db-api om SQL-injecties enz. te voorkomen. Ze mogen niet worden gebruikt voor tabel- of veldnamen.

Dus, wat u hier wilt, is uw zoekopdracht bouwen met behulp van tekenreeksopmaak:

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

Sinds db_name[0] afkomstig is van een vertrouwde bron, er is hier geen beveiligingsprobleem.




  1. Arabisch opslaan in SQL-database

  2. Cache/Hergebruik een subquery in MySQL

  3. Hoe moet ik --secure-file-priv in MySQL aanpakken?

  4. De beste manier om de laatst ingevoegde ID in mysql te vinden met behulp van php