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()

1 ответ

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

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

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

Другие вопросы по тегам