SQLite3将单个占位符值传递给python中的函数 - 新手

时间:2016-04-10 21:30:07

标签: 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_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行,列表       c.execute(表'学生'中'SELECT sql FROM sqlite_master WHERE type = \'table \'AND name =(?)',str(tablename))#list列

     

ProgrammingError:提供的绑定数量不正确。当前语句使用1,并且提供了8个。

任何人都可以告诉我我做错了什么吗?感谢

1 个答案:

答案 0 :(得分:2)

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

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

希望这会有所帮助:)