如何通过Python向PostgreSQL插入列表数据?报错求助
解决PostgreSQL插入列表时的TypeError问题
错误原因
cursor.execute()的第二个参数要求是序列类型(元组、列表等),你直接传入单个整数i,Python会将其视为单个字符的序列解析,导致参数与SQL语句中的%s不匹配,从而触发TypeError: Not all arguments converted during string formatting。另外你的代码里还存在拼写错误:cusror应该是cursor。
修复方案1:单条插入(修正参数格式)
将单个元素包装成元组(注意必须加逗号,否则会被识别为普通括号),同时建议在循环外统一提交事务,提升性能:
A = [1,2,3,3,4,5,6,8,90,8,6,5] for i in A: cursor.execute("INSERT INTO schema1.table1 VALUES (%s)", (i,)) # 用(i,)把单个元素转为元组 connection.commit() # 循环结束后统一提交
修复方案2:批量插入(更高效)
使用executemany()方法批量插入,减少数据库交互次数,适合数据量较大的场景:
A = [1,2,3,3,4,5,6,8,90,8,6,5] # 将列表元素转为单个元素的元组列表 values_list = [(x,) for x in A] cursor.executemany("INSERT INTO schema1.table1 VALUES (%s)", values_list) connection.commit()
额外注意事项
- 确认
schema1.table1表只有一个数值类型的列,确保插入的数据类型与列类型匹配; - 检查游标和连接对象的拼写是否正确,避免因笔误导致的其他错误。
内容的提问来源于stack exchange,提问作者Ravikant Pandey
相关产品推荐
相关产品推荐

