2016-04-10 27 views
0

Yürütme deyimindeki bir değişkene bakın. Veritabanı işlemek için Python'da sqlite3.connect.cursor.execute kullanmaya çalışıyorum, ancak SELECT deyimini aşağıdaki kodun nasıl yapılacağından emin olmayacağınızdan emin değilim. Bir değişken olarak doğru şekilde okunabilir.Python sqlite3,

Python, tbname öğesinin bir değişken olduğunu bilmesini umarak, bitiş tırnak işareti dışında tbname'den çıkmayı denedim. Ancak kod çalışmıyor. Herhangi bir fikir?

def print_col(dbname, tbname): 
    conn = sqlite3.connect(dbname) 
    c = conn.cursor() 
    c.execute('SELECT sql FROM sqlite_master WHERE type = \'table\' AND tbl_name = '+ tbname) 
    print c.fetchall() 
    conn.close() 
+2

Hangi hata alıyorum? Print_col nasıl aranır? –

+0

Merhaba, aşağıdaki hata var: c.execute ('SELECT sql FROM sqlite_master WHERE type = \' table \ 'VE tbl_name =' + tbname) OperationalError: böyle bir sütun yok: ayrıntılar – z257

+0

Ve ben sorarak print_col işlevini çağırın. kullanıcı girişi için: dbname2 = raw_input ('Lütfen bir veritabanı adı girin (classes.db/program.db):') tbname2 = raw_input ('Lütfen bir tablo adı girin (kurslar/detaylar):') print_col (dbname2) , tbname2) – z257

cevap

0

Bu parametreler için ne:

c.execute("SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = ?", (tbname,))