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