aioodbc批量插入整数ID列表遇TypeError,求正确实现方式
解决aioodbc批量插入ClaimID的类型错误问题
错误原因
executemany要求传入的参数列表中,每个元素必须是包含对应字段值的可迭代对象(元组、列表或Row)。你直接传入单个整数组成的列表(如[1,2,3]),每个整数无法被识别为合法的参数集,因此触发TypeError。
正确实现方式
将每个整数包装成单元素元组(或列表),构造符合要求的参数列表:
# 转换ID列表格式:把每个整数转为单元素元组 formatted_ids = [(id_,) for id_ in ids] # 执行批量插入 await cur.executemany('INSERT INTO ML.buffer.ClaimListAPI (ClaimID) VALUES (?);', formatted_ids)
补充说明
对于21000条数据的量级,executemany会自动做分批处理(避免单条SQL过长),不需要额外拆分。如果追求更高性能,也可以手动构造批量插入SQL(如INSERT INTO ... VALUES (?), (?), ...),但需要注意数据库对SQL语句长度的限制,executemany的方式更稳妥。
内容的提问来源于stack exchange,提问作者Alex Nikitin
相关产品推荐
相关产品推荐

