SQLite3在python中向函数传递单个占位符值-newbie

SQLite3在python中向函数传递单个占位符值-newbie,python,sqlite,Python,Sqlite,我是SQLite的新手,我需要这方面的帮助。我正在尝试用python制作一个简单的函数,该函数采用数据库名和表名,并使其显示整个表。我是这样写的: def columnlist(dbname,tablename): dbname=str(dbname) tablename=str(tablename) conn = sqlite3.connect(dbname) #connection c = conn.cursor() c.execute('SELECT sql FROM sqlite_mas

我是SQLite的新手,我需要这方面的帮助。我正在尝试用python制作一个简单的函数,该函数采用数据库名和表名,并使其显示整个表。我是这样写的:

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()
不知怎的,当我尝试运行它时,它给了我以下错误:

文件C:/Users/XXXX/Documents/Python Scripts/Assignment 3/L6Q1.py,第20行,在columnlist中 c、 执行“SELECT sql FROM sqlite\ U master,其中type=\'table\'和name=',strtablename列表列位于表“students”中

编程错误:提供的绑定数量不正确。当前语句使用1,提供了8个


谁能告诉我我做错了什么吗?谢谢

问题是您需要传入一个元组而不是单个值。您要做的是将该行更改为以下内容:

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

希望这能有所帮助:

问题是您需要传入一个元组,而不是单个值。您要做的是将该行更改为以下内容:

c.execute('SELECT sql FROM sqlite_master WHERE type=\'table\' AND name=(?)',(tablename,))
希望这有助于: