2016-04-10 13 views
0

Ich versuche zu verwenden, sqlite3.connect.cursor.execute in Python zu manipulieren Datenbank, aber nicht sicher, wie Sie die SELECT-Anweisung so richtig, dass die tbname im Code unten kann als Variable richtig eingelesen werden.Python sqlite3, beziehen sich auf eine Variable in Anweisung execute

Ich habe versucht, tbname außerhalb des endenden Anführungszeichens zu verlassen, in der Hoffnung, dass auf diese Weise Python weiß tbname ist eine Variable. Der Code funktioniert jedoch nicht. Irgendeine Idee?

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

Welche Fehler bekommen Sie? Wie rufst du print_col an? –

+0

Hallo, ich habe unten Fehler: c.execute ('SELECT sql FROM sqlite_master WHERE type = \' table \ 'UND tbl_name =' + tbname) OperationalError: keine solche Spalte: Details – z257

+0

Und ich rufe die print_col -Funktion durch die Frage zur Benutzereingabe: dbname2 = raw_input ('Bitte geben Sie einen Datenbanknamen ein (grades.db/program.db):') tbname2 = raw_input ('Bitte geben Sie einen Tabellennamen ein (Kurse/Details)') print_col (dbname2 , tbname2) – z257

Antwort

0

Dies ist, was Parameter sind für:

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