4

我正在尝试为单个值(行)进行批量插入,我正在尝试使用 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)
4

2 回答 2

4

写作("/helloworld")和写作一样"/helloworld"。要创建一个元组,您需要("/helloworld", ).

你正在做的实际上是运行这个:

cursor.executemany('''INSERT INTO fb_pages(fb_page)
    VALUES (%s)''', ["/helloworld","/dfadfadsfdas"])

现在,您收到的错误非常有意义 - 您提供了两个参数,只有一个占位符。entries_list如下定义将解决问题:

entries_list=[("/helloworld",),
            ("/dfadfadsfdas",)]
于 2014-06-20T20:33:37.233 回答
2

除了,像 Karem 所指出的那样在末尾添加一个元组之外

entries_list=[
    ("/helloworld",),
    ("/dfadfadsfdas",)
] 

您也可以只传递列表,当您使用参数化查询时,它会为您整理好。

    entries_list=[
      ["/helloworld"],
      ["/dfadfadsfdas"]
]
于 2019-11-19T19:05:52.463 回答