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-инъекцию, проверьте имя таблицы на список допустимых имен.