我正在尝试为单个值(行)执行批量插入,我尝试使用executemany函数来执行此操作,但它将无效,它将返回TypeError: not all arguments converted during string formatting
。但是,当我添加额外的值时,它确实有效
所以... 它将在此处返回错误:
entries_list=[("/helloworld"),
("/dfadfadsfdas")]
cursor.executemany('''INSERT INTO fb_pages(fb_page)
VALUES (%s)''', entries_list)
但不是在这里:
entries_list=[("/helloworld", 'test'),
("/dfadfadsfdas", 'rers')]
cursor.executemany('''INSERT INTO fb_pages(fb_page, page_name)
VALUES (%s, %s)''', entries_list)
答案 0 :(得分:2)
撰写("/helloworld")
与撰写"/helloworld"
相同。要创建元组,您需要("/helloworld", )
。
你正在做的事情实际上就是这样:
cursor.executemany('''INSERT INTO fb_pages(fb_page)
VALUES (%s)''', ["/helloworld","/dfadfadsfdas"])
现在,您收到的错误非常有意义 - 您只需要一个占位符即可提供两个参数。如下定义entries_list
将解决问题:
entries_list=[("/helloworld",),
("/dfadfadsfdas",)]
答案 1 :(得分:0)
除了按照Karem的指示在末尾添加一个额外的,
来构成元组
entries_list=[
("/helloworld",),
("/dfadfadsfdas",)
]
您也可以传入列表,这样会在使用参数化查询时为您进行排序。
entries_list=[
["/helloworld"],
["/dfadfadsfdas"]
]