Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Python mysql.connector.errors. %s diteruskan ke kueri SQL dengan tanda kutip

Fakta bahwa MySQLPython menggunakan penanda format string standar ("%") untuk variabel placeholder dalam kueri dapat membuat segalanya membingungkan.

Placeholder kueri di db-api python adalah untuk nilai digunakan di where klausa dan insert dan update pernyataan, dan disanitasi dengan benar / lolos / dikutip oleh db-api untuk menghindari injeksi SQL dll. Mereka tidak seharusnya digunakan untuk nama tabel atau bidang.

Jadi, yang Anda inginkan di sini adalah membuat kueri menggunakan pemformatan string:

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

Sejak db_name[0] berasal dari sumber tepercaya, tidak ada masalah keamanan di sini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu PDO, apa hubungannya dengan injeksi SQL, dan mengapa saya harus menggunakan ini?

  2. Mengirimkan baris tabel HTML ke php

  3. Kesalahan:Tabel 'mysql.proc' tidak ada saat menambahkan Sumber Data MySQL ke proyek Visual Studio

  4. dapatkan nilai dari database MySQL dengan PHP

  5. MySQL InnoDB:kunci non-utama peningkatan otomatis