2013-03-06 3 views
12

J'essaie d'utiliser une variable pour un nom de table. J'obtiens l'erreur "... près de '' MyTable '' à la ligne 1 Je ne dois pas échapper à ce droit.Le double '' dans l'erreur semble être un indice, mais je ne comprends pas."Python MySQLdb exécuter la variable de table

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

Je suis sûr qu'il y a plusieurs doublons. J'ai choisi celui que je connaissais, mais si quelqu'un d'autre en trouve un qui ressemble encore plus au problème de l'OP, il faut l'utiliser à la place. – bernie

Répondre

11

vous ne pouvez pas utiliser un paramètre pour le vous aurez besoin d'utiliser l'interpolation de chaîne Python normale nom de la table dans l'appel execute pour que:.

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

Naturellement, vous devez être très prudent si le nom de la table provient de l'entrée de l'utilisateur Pour réduire l'injection SQL, validez le nom de la table par rapport à une liste de noms valides