2016-04-10 2 views
0

Я пытаюсь использовать sqlite3.connect.cursor.execute в Python для управления базой данных, но не уверен, как правильно построить инструкцию SELECT, чтобы имя tb в коде ниже может быть правильно прочитан как переменная.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 такой столбец: подробности – 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,)) 
Смежные вопросы