2016-04-10 18 views
0

SQLite'de yeniyim ve bu konuda yardıma ihtiyacım var. Bir veritabanı adı ve tablo adı alır ve tüm tabloyu görüntüleyen python'da basit bir işlev yapmaya çalışıyorum.SQLite3 python'daki bir işleve tek bir yer tutucu değeri geçirme - newbie

File "C:/Users/XXXX/Documents/Python Scripts/Assignment 3/L6Q1.py", line 20, in columnlist c.execute('SELECT sql FROM sqlite_master WHERE type=\'table\' AND name=(?)',str(tablename)) #list columns in table 'students'

ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.

kimse ne yanlış bana göstermek misiniz: Ben çalıştırmayı denediğinizde

def columnlist(dbname,tablename): 
dbname=str(dbname) 
tablename=str(tablename) 
conn = sqlite3.connect(dbname) #connection 
c = conn.cursor() 
c.execute('SELECT sql FROM sqlite_master WHERE type=\'table\' AND name=?',tablename) #list columns in table 'students' 
pp.pprint(c.fetchall()) 
conn.close() 

nasılsa, bana aşağıdaki hata verdi: Böyle yazdım? Teşekkürler

cevap

2

Sorun şu ki, tek bir değer yerine bir tuple aktarmanız gerekiyor. Ne yapmak isteyeyim aşağıdaki konusunda çizgiyi değiştirmektir:

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

Umut bu yardımcı olur :)

+0

Çok teşekkürler! Bu kod mükemmel çalışıyor –