我的一个班级有一个简短的问题;它涉及在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中定义的变量,但我不确定。对此有任何帮助将非常感激。
答案 0 :(得分:1)
当然,您需要参数化查询:
c.execute("""
SELECT
sql
FROM
sqlite_master
WHERE
type = 'table' AND
name = ?""", (table_name, ))
其中?
是sqlite3
将填充查询参数(table_name
此处)的占位符。