2016-04-05 13 views
0

Ich habe eine kurze Frage für eine meiner Klassen; Es beinhaltet das Erstellen einer Funktion in Python, die einen SQLite-Datenbanknamen und einen Tabellennamen als Argumente akzeptiert und die Spaltennamen in dieser Tabelle zurückgibt.Verwenden einer Funktion zum Abrufen von Spaltennamen Sqlite3

Bisher habe ich getan folgende:

#!/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() 

Leider wird dieser Code erzeugt eine leere Liste. Ich vermute, dass der SQL-Befehl in der Funktion execute keine in Python definierten Variablen akzeptiert, aber ich bin mir nicht sicher. Jede Hilfe dazu wäre sehr willkommen.

Antwort

1

Sicher, müssen Sie parametrieren die Abfrage:

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

wo ? ein Platzhalter ist, dass sqlite3 mit dem Abfrageparameter füllen würde (table_name hier).

Verwandte Themen