Python MySQL DB executemany不适用于一个值

时间:2014-06-20 19:25:48

标签: python mysql executemany

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

2 个答案:

答案 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"]
]