当前位置: 首页 > 面试题库 >

我无法让Python的executemany使sqlite3正常工作

乔宏峻
2023-03-14
问题内容

我试图使用executemany将值插入数据库中,但对我来说不起作用。这是一个示例:

clist = []
clist.append("abc")
clist.append("def")
clist.append("ghi")
cursor.executemany("INSERT INTO myTable(data) values (?) ", clist)

这给了我以下错误:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 3 supplied.

但是,当我更改列表时,它可以正常工作:

clist = ["a", "b"]
cursor.executemany("INSERT INTO myTable(data) values (?) ", clist)

它按预期工作!我可以在数据库中看到数据。为什么第一个列表不起作用而第二个列表却不起作用?

(PS:这只是一个示例,而不是实际的代码。为简单起见,我制作了一个小测试用例)。


问题答案:

根据我对执行力的了解,您的意思是,

clist = [("abc", ), ("def", ), ("ghi", )]
cursor.executemany("INSERT INTO myTable(data) values(?)", clist)

或类似的东西。不要在sqlite的语法上引用我,我已经有一段时间没有在应用程序中使用它了,但是您需要一个可迭代的元组(更常见的是可迭代的)。

您似乎收到的错误是它试图遍历您提供的每个字符串,因此您的语句的工作方式如下:

clist = [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'h', 'i')]

我不知道您的第二个查询要完成什么,但它似乎是在解决另一个表,因此我猜不到模式信息,但是如果将单个字符串更改为多字符字符串,它也会失败。



 类似资料:
  • 问题内容: 我最近开始学习Python和SQL,并有一个问题。 将Python与SQLite3结合使用,我编写了以下代码: 我注意到我可以使用for循环而不是executemany来做同样的事情: 我只是想知道哪个更有效,更经常使用? 问题答案: 批处理插入会更有效,并且随着记录数量的增加,性能差异通常会很大。执行insert语句会产生大量开销,如果您一次插入一行,则会一遍又一遍地产生该开销。 只

  • 我在Spark上使用Python时遇到问题。我的应用程序有一些依赖项,如numpy、pandas、astropy等。我无法使用virtualenv创建具有所有依赖项的环境,因为集群上的节点除了HDFS之外没有任何公共挂载点或文件系统。因此,我一直坚持使用。我将站点包的内容打包在一个ZIP文件中,并使用

  • 问题内容: 我有代码: 这返回 如果我们有 我们得到 为什么有区别?为什么(第一次)没有区别? 谢谢! 问题答案: 让我解释一下您在做什么: 您正在创建一个正则表达式,它将查找或,然后尝试查找是否还有更多或之后的内容,并且它将一直寻找或直到找不到为止。因为您希望捕获组仅返回,否则您只会得到最后一个捕获/找到的组。 但是,如果你有一个这样的字符串:你会得到,因为你在字符串先来看看,找到,然后你看多了

  • 我正在一个使用谷歌地图apiv3的网站上工作。我在更新面板中有一个按钮,通过该按钮,我可以使用按钮点击背后的代码和javascript函数执行一些逻辑。 由于按钮在更新面板中,我在firebug的监视窗口中看不到任何东西,javascript函数中的断点也不起作用。在没有更新面板的情况下,我可以在watch中看到执行流程,一切正常,但我在map上得到了重新加载。 aspx中的代码: 单击按钮1:

  • 问题内容: 当我运行以下脚本时,两个lambda都在同一文件junk.txt上运行os.startfile()。我希望每个Lambda都使用创建Lambda时设置的值“ f”。有没有办法让它按我的预期运行? 问题答案: 一种方法是执行此操作: 否则,在调用该函数时将进行查找,因此您将获得当前(循环后)的值。 我更喜欢的方式: 甚至(在python 2.5+中):

  • 我下面的教程视频链接在这里:http://www.youtube.com/watch?v=wAwQ-noyB98 我安装了Matplotlib,包括其他必要的库:Numpy、dateutil、pytz、pyparsing和六个。 现在,我正在尝试以下命令: 导入matplotlib.pyplot plt。图([1,2,3,4,5,6,7],[5,6,7,8,9,10,11]) 我期待着某种图形出现