def execl # 创建SQL表格 sql = CREATE TABLE IF NOT EXISTS test3 序号 INT11 PRIMARY KEY 链接 VARCHAR255 标题 VARCHAR255
上述代码显示"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])])
这样就能够正确执行插入操作了
原文地址: http://www.cveoy.top/t/topic/hSdA 著作权归作者所有。请勿转载和采集!