使用函数获取列名Sqlite3

时间:2016-04-05 20:38:30

标签: python python-2.7 sqlite

我的一个班级有一个简短的问题;它涉及在python中构建一个函数,它接受一个sqlite数据库名称和一个表名作为参数,并返回该表中的列名。

到目前为止,我已完成以下工作:

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

可悲的是,此代码生成一个空列表。我怀疑execute函数中的SQL命令不会接受Python中定义的变量,但我不确定。对此有任何帮助将非常感激。

1 个答案:

答案 0 :(得分:1)

当然,您需要参数化查询

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

其中?sqlite3将填充查询参数(table_name此处)的占位符。