2016-04-10 81 views
0

我想在Python中使用sqlite3.connect.cursor.execute來操縱數據庫,但不知道如何正確構造SELECT語句,以便在下面的代碼中的tbname可以作爲變量正確讀入。Python的sqlite3,指的是執行語句中的變量

我試圖離開結束引號外的tbname,希望以這種方式Python知道tbname是一個變量。但是代碼不起作用。任何想法?

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

你什麼錯誤?你怎麼稱呼print_col? –

+0

嗨,我得到以下錯誤: c.execute('SELECT sql from sqlite_master WHERE type = \'table \'AND tbl_name ='+ tbname)OperationalError:no such column:details – z257

+0

而我通過詢問print_col函數用戶輸入: dbname2 = raw_input('請輸入數據庫名稱(grades.db/program.db):') tbname2 = raw_input('請輸入表名(課程/詳情):') print_col(dbname2 ,tbname2) – z257

回答

0

這是什麼參數是:

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