上述代码显示"not enough arguments for format string"是因为在执行cur.executemany语句时,传递的参数数量不足。

cur.executemany函数需要传递两个参数,第一个参数是SQL语句,第二个参数是一个可迭代对象,用于替换SQL语句中的占位符。

根据你的代码逻辑,第一个参数传递的SQL语句是正确的。但是在第二个参数中,你传递的是一个元组(i[0], i[1], i[2], i[3]),而executemany函数期望的是一个嵌套的可迭代对象。

你可以将(i[0], i[1], i[2], i[3])修改为[(i[0], i[1], i[2], i[3])],这样就能够正确传递参数给executemany函数。

修改后的代码如下:

def execl():  # 创建SQL表格
    sql = '''CREATE TABLE IF NOT EXISTS test3 (
                        `序号` INT(11) PRIMARY KEY,
                        `链接` VARCHAR(255),
                        `标题` VARCHAR(255),
                        `时间` DATE
                    )
    '''
    cur.execute(sql)  # 调用之前的cursor来创建表

    data = dict_create()
    for i in data:
        cur.executemany("insert into test3(`序号`, `链接`, `标题`, `时间`) values(%s, %s, %s, %s)", [(i[0], i[1], i[2], i[3])])

这样就能够正确执行插入操作了

def execl # 创建SQL表格 sql = CREATE TABLE IF NOT EXISTS test3 序号 INT11 PRIMARY KEY 链接 VARCHAR255 标题 VARCHAR255

原文地址: http://www.cveoy.top/t/topic/hSdA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录