当前位置: 首页 > 知识库问答 >
问题:

python执行批量新增sql报错? not enough arguments for format string?

萧卜霸
2024-06-17
import pyodbcfrom sqlConfig  import MySQLConnectionPool# 连接数据库conn = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\东和.accdb')# 创建连接池对象ConnPool = MySQLConnectionPool()# 创建游标cursor = conn.cursor()# 查询数据cursor.execute('SELECT * FROM 配方列表')list1 = []# 逐行读取数据for row in cursor.fetchall():    list1.append(row)print(list1)#list = cursor.fetchall()sql_update_one = "delete from plan_peifang_list where 1=%s"ConnPool.update_one(sql_update_one, (1,))a= [('D033', '吉林建龙', 'AMC72/10Z5-8A2', None, '2024/5/31 9:00:24', None), ('D074', '鞍钢联众', 'MAC65/18F5-10Pa24', None, '2024/4/30 9:12:50', None), ('D033', '吉林建龙', 'AMC72/10Z5-8A2', None, '2024/5/31 9:00:24', None), ('D033', '吉林建龙', 'AM88/6W-L10', None, '2024/5/29 15:31:16', None), ('E005', '塔塔布衫', 'MC14H2Pa24-42C3D3', None, '2024/6/1 15:34:59', None), ('D033', '吉林建龙', 'MC12H4P2-4S9', None, '2024/6/3 6:12:35', None), ('E005', '塔塔布衫', 'MC12H3Pa24-41C3G1', None, '2024/6/3 8:15:18', None), ('E035', '米塔尔', 'MC13H2PA24-4C2', None, '2024/6/3 15:19:34', None), ('E024', '香港泰科', 'MC10H3P2-3D3', None, '2024/6/4 6:53:56', None), ('E039', '瑞钢国际', 'MC14H2PA24-8C2', None, '2024/6/4 14:32:25', None), ('E038', '瑞钢国际', 'MC12H3P2-8C2', None, '2024/6/4 16:00:51', None), ('D033', '吉林建龙', 'AM82/8Z5-L10', None, '2024/6/6 16:33:46', None), ('D023', '北方冶金', 'MC16H2A5', None, '2024/6/6 16:48:42', None), ('D023', '北方冶金', 'MC15F5P2-43H5C6', None, '2024/6/7 14:26:36', None), ('D033', '吉林建龙', 'MAC60/20Y5-10', None, '2024/6/13 17:56:39', 'TRL HMR LSKS'), ('D059', '吉林建龙', 'MAC55/25Y5-8', None, '2024/6/13 10:38:08', 'SWC30H'), ('E038', '瑞钢国际', 'MC12H2P2-8C2', None, '2024/6/8 19:10:57', None), ('E037', '德富高', 'ASC62/10X4-12', None, '2024/6/11 8:09:23', 'DF12X10'), ('D038', '德龙钢铁', 'MC10C1RBA235', None, '2024/6/11 15:17:45', '出钢口'), ('E037', 'DUFERCO', 'ASC73/8B-10A2', None, '2024/6/12 11:07:08', 'DF10K8'), ('E041', '香港泰科', 'MC10H2Pa22-5D3', None, '2024/6/12 20:06:05', 'SWC30H'), ('E000', 'LADLE', 'MC14H3Pa24-4C3', None, '2024/6/13 15:00:17', 'TRL HMR LSKS'), ('E042', '东和欧洲', 'MC12H2PA24', None, '2024/6/13 19:06:19', 'CMAG12H2A4'), ('E042', '东和欧洲', 'MC10C2P2', None, '2024/6/13 22:03:29', 'CMAG 10C2A01')]print(a)#sql_insert_all = "insert into plan_peifang_list ('dingdanhao', 'kehu', 'zhilianghao','zhongliang','time','waibuzhilianghao') values (%s,%s,%s,%s,%s,%s)"sql = "INSERT INTO plan_peifang_list (dingdanhao, kehu, zhilianghao, zhongliang, time, waibuzhilianghao) VALUES (%s, %s, %s, %s, %s, %s)"ConnPool.insert_all(sql, list1)

我传参用list1 会报错
not enough arguments for format string,但是我用变量a就会成功。 a和变量list1的值是一样的啊? 为什么list1会报错?

=========

我改成这个

sql1 = "INSERT INTO plan_peifang_list (dingdanhao, kehu, zhilianghao, zhongliang, time, waibuzhilianghao) VALUES (%s, %s, %s, %s, %s, %s)"    ConnPool.insert(sql1,(row[0], row[1], row[2], row[3], row[4], row[5]))    list1.append(row)

好使了,这是为什么啊?

共有1个答案

夔修伟
2024-06-17

看你的成功案例,用的都是 tuple 。

但 fetchall 得到的 row 并不是 tuple ,即使他们的“值”可能看起来是一样的。

具体为啥不是 tuple 就不成,就得看 insert / insert_all 具体是怎么实现的了。

 类似资料:
  • 本文向大家介绍Mybatis批量更新报错问题,包括了Mybatis批量更新报错问题的使用技巧和注意事项,需要的朋友参考一下 下面给大家介绍mybatis批量更新报错问题, 后来发现是jdbc链接没有加允许批量更新操作的参数引起的,不加会报badsql,mysql版的mybatis批量更新操作如下   下面看下Mybatis批量更新数据的方式   第一种方式 但是这种方式修改的字段值都是一样的。 第

  • 问题内容: 我有一个具有主键和称为的列的270k行数据库,并且我有一个带有Mid和值的文本文件。现在,我想更新表,以便将每个值分配给正确的中间值。 我当前的方法是从C#中读取文本文件,并为读取的每一行更新表中的一行。必须有一种更快的方式来做我感觉到的事情..有什么想法吗? 编辑:表中还有其他列,所以我真的需要根据中点 更新 的方法。 问题答案: 您可以使用SQL Server导入和导出向导: ht

  • 本文向大家介绍MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法,包括了MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法的使用技巧和注意事项,需要的朋友参考一下 最近在项目中有这么一段代码:下载服务器基础业务数据进行本地批量插入操作,因项目中使用mybatis进

  • 本文向大家介绍C#批量更新sql实例,包括了C#批量更新sql实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#批量更新sql的方法,分享给大家供大家参考。具体方法如下: 要实现批量更新Card数据,主要有以下步骤: 1、首先建立数据库连接 2、把部分数据填充到Dataset中 3、修改Dataset中数据的值 4、更新Dataset 5、循环操作,具体操作过程见下面代码: 希望本文

  • 本文向大家介绍如何执行批量插入?相关面试题,主要包含被问及如何执行批量插入?时的应答技巧和注意事项,需要的朋友参考一下 首先,创建一个简单的 insert 语句:   然后在 java 代码中像下面这样执行批处理插入:

  • 我是spark streaming的新手,我有一个关于其用法的一般性问题。我目前正在实现一个应用程序,它从一个Kafka主题流式传输数据。 使用应用程序只运行一次批处理是一种常见的场景吗,例如,一天结束,收集主题中的所有数据,做一些聚合和转换等等? 这意味着在用spark-submit启动应用程序后,所有这些东西将在一批中执行,然后应用程序将被关闭。或者spark stream build是为了在

  • 本文向大家介绍Python实现ssh批量登录并执行命令,包括了Python实现ssh批量登录并执行命令的使用技巧和注意事项,需要的朋友参考一下 局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的。现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费

  • 问题内容: 我的应用程序具有一组固定的SQL查询。这些查询以轮询模式运行,每10秒运行一次。 由于数据库的大小(> 100 GB)和设计(优步进行了标准化),我遇到了性能问题。 每当更改查询结果的数据库上发生CRUD事件时,是否可以对给定查询进行增量更改?例如,如果我查询姓氏为FOO的所有员工,那么我希望每当a)姓氏为FOO的新员工加入b)姓氏为FOO的雇员被解雇等时收到通知。 我正在运行SQL