Подтвердить что ты не робот

Python MySQLdb выполняет табличную переменную

Я пытаюсь использовать переменную для имени таблицы. Я получаю сообщение об ошибке "... рядом с" myTable "в строке 1 Я не должен избегать этого права. Двойной "ошибка" кажется ключом, но я не понимаю.

db = MySQLdb.connect("localhost","user","pw","database" )
table = "myTable"
def geno_order(db, table):
    cursor = db.cursor() # prepare a cursor object using cursor() method
    sql = "SELECT * FROM %s"
    cursor.execute(sql, table)
    results = cursor.fetchall()
4b9b3361

Ответ 1

Вы не можете использовать параметр для имени таблицы в вызове execute. Для этого вам понадобится обычная интерполяция строк Python:

sql = "SELECT * FROM %s" % table
cursor.execute(sql)

Естественно, вам нужно быть особенно внимательным, если имя таблицы поступает с пользовательского ввода. Чтобы смягчить SQL-инъекцию, проверьте имя таблицы на список допустимых имен.