2013-03-06 37 views
12

Tablo adı için bir değişken kullanmaya çalışıyorum. Hatasını" ... yakın 'Ben 'hatası bir ipucu gibi görünüyor içinde'. Çift bu hakkı kaçan olmamalıdır, ama ben alamadım hattı 1 kısmındaki '' myTable'.Python MySQLdb tablo değişkenini çalıştır

olsun
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

Eminim birkaç kopya var. Bildiğim birini seçtim ama eğer başkası OP'nin problemi gibi bir şey bulursa, bunun yerine onu kullanır. – bernie

cevap

11

sen execute çağrısında tablo adı için bir parametre kullanamazsınız Bunun için, normal Python dize interpolasyon kullanmanız gerekir.

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

Doğal olarak, ekstra dikkatli olmak gerekir Tablo adı kullanıcı girdisinden geliyorsa SQL enjeksiyonunu azaltmak için, tablo adının geçerli adların listesine göre doğrulayın.