插入时Python Sqlite问号问题

插入时Python Sqlite问号问题,python,sqlite,Python,Sqlite,我正在尝试编写Sqlite Python代码,但遇到了问号问题。我想在表\u name229中插入一些列,标题为列。这些行位于行列表中。当我输入(?,?,?,?,?,?,?)而不是{entry}时,它工作正常,但变为手动。因此,我想按如下方式输入这些问号,以使流程自动化,但当然,它会抛出以下错误 c.executemany("""INSERT INTO {tablename} {headers} VALUES {entry}""".format(tablename

我正在尝试编写Sqlite Python代码,但遇到了问号问题。我想在
表\u name229
中插入一些列,标题为
。这些行位于
列表中。当我输入
(?,?,?,?,?,?,?)
而不是
{entry}
时,它工作正常,但变为手动。因此,我想按如下方式输入这些问号,以使流程自动化,但当然,它会抛出以下错误

c.executemany("""INSERT INTO {tablename} {headers}
                VALUES {entry}""".format(tablename='table_name229',headers=tuple(columns),
                                        entry=tuple(['?']*len(columns))),rows)
编程错误:提供的绑定数量不正确。当前语句使用0,提供了7个


你能帮我解决这个问题吗?

当字符串元组通过
str.format
方法转换为字符串表示形式时,它会变成一个逗号分隔的单引号字符串列表,括在括号中,这对标题名很有效,但对问号占位符无效,它们不应该被引用,因为它们将被视为纯字符串值

相反,您应该使用
str.join
方法自己构建一个逗号分隔的问号列表,并将其括在括号中:

c.executemany('INSERT INTO {tablename} {headers} VALUES ({entry})'.format(
    tablename='table_name229', headers=tuple(columns),
    entry=','.join(['?'] * len(columns))), rows)

当字符串元组通过
str.format
方法转换为字符串表示形式时,它会变成一个逗号分隔的单引号字符串列表,括在括号中,这恰好适用于标题名,但不适用于问号占位符,它们不应该被引用,因为它们将被视为纯字符串值

相反,您应该使用
str.join
方法自己构建一个逗号分隔的问号列表,并将其括在括号中:

c.executemany('INSERT INTO {tablename} {headers} VALUES ({entry})'.format(
    tablename='table_name229', headers=tuple(columns),
    entry=','.join(['?'] * len(columns))), rows)