2013-03-06 13 views
12

Próbuję użyć zmiennej dla nazwy tabeli. Pojawia się błąd "... blisko" "myTable" na linii 1 Nie mogę uciekać od tego prawa Podwójne "w błędzie wydaje się być wskazówką, ale nie rozumiem tego."Python MySQLdb Wykonaj zmienną tabeli

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

Jestem pewien, że istnieje kilka duplikatów. Wybrałem tego, którego znałem, ale jeśli ktoś inny znajdzie taki, który jest bardziej podobny do problemu PO, należy go zamiast tego użyć. – bernie

Odpowiedz

11

nie można użyć parametru dla nazwy tabeli w wywołaniu execute musisz użyć interpolacji normalny ciąg Python za to.

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

Oczywiście, musisz być bardzo ostrożny jeśli nazwa tabeli pochodzi z danych wprowadzonych przez użytkownika Aby złagodzić iniekcję SQL, sprawdź nazwę tabeli przed listą poprawnych nazw

Powiązane problemy