2016-04-05 13 views
0

私のクラスの1つに短い質問があります。 Pythonでsqliteデータベース名とテーブル名を引数とする関数を構築し、このテーブルの中に列名を返します。関数を使用して列名を取得するSqlite3

#!/user/bin/env python 

import sqlite3 
import pprint 
pp = pprint.PrettyPrinter() 

def print_table_columns(database_name, table_name): 
    conn = sqlite3.connect(database_name) 
    c = conn.cursor() 
    c.execute('SELECT sql FROM sqlite_master WHERE type=\'table\' AND name=\'table_name\'') 
    print c.fetchall() 
    conn.close() 

は悲しいことに、このコードは、空のリストを生成します。

は、これまでのところ、私は次のように行われています。私は、実行関数内のSQLコマンドはPythonで定義された変数を取らないと思っていますが、わかりません。これについての助けがあれば幸いです。

?sqlite3は、クエリパラメータ(ここでは table_name)で埋めるということプレースホルダです
c.execute(""" 
    SELECT 
     sql 
    FROM 
     sqlite_master 
    WHERE 
     type = 'table' AND 
     name = ?""", (table_name,)) 

答えて

1

確かに、あなたは、クエリをパラメータする必要があります。

関連する問題