2016-04-05 15 views
0

Sınıflarımdan birine kısa bir sorum var; sqlite veritabanı adını ve argüman olarak tablo adını alan python'da bir işlev oluşturmayı ve bu tablonun içindeki sütun adlarını döndürmeyi içerir.Sütun adlarını almak için bir işlev kullanma 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() 

Ne yazık ki, bu kod, boş liste oluşur:

Şimdiye kadar aşağıdaki yaptık. Yürütme işlevi içindeki SQL komutunun Python'da tanımlanan değişkenleri almadığından şüpheleniyorum, ancak emin değilim. Bu konuda herhangi bir yardım çok takdir edilecektir.

cevap

1

Tabii, sorgu parametreleyebilir gerekir: ?sqlite3 sorgu parametresi (burada table_name) ile doldurun ki bir yer tutucudur

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

.