Thực tế là MySQLPython sử dụng đánh dấu định dạng chuỗi tiêu chuẩn ("%") cho các trình giữ chỗ biến trong các truy vấn có thể khiến mọi thứ trở nên khó hiểu.
Trình giữ chỗ truy vấn trong db-api của python dành cho giá trị được sử dụng trong where
mệnh đề và insert
và update
các câu lệnh, và được db-api viết thêm / thoát / trích dẫn phù hợp để tránh chèn SQL, v.v. Chúng không được sử dụng cho tên bảng hoặc trường.
Vì vậy, những gì bạn muốn ở đây là tạo truy vấn của mình bằng cách sử dụng định dạng chuỗi:
sql = 'SHOW TABLES FROM %s;' % (db_name[0],)
cursor.execute(sql)
Kể từ db_name[0]
đến từ một nguồn đáng tin cậy, không có vấn đề bảo mật nào ở đây.