Python解析同索引列表项并批量存入MySQL数据库问题
解决同索引列表元素存入MySQL的问题
你的代码当前直接把整个列表作为参数传入SQL插入语句,这会导致参数不匹配——SQL需要的是单个的id和content值,而非整个列表。要取出两个列表同索引的元素并配对存入数据库,用zip()函数就能轻松解决。
修改后的代码
cursor = self.con.cursor() cursor.execute("select id from news where uri = %s", (item['article_url'],)) result = cursor.fetchone() my_list = [{'comment_code': ['1','18','2','3','4','5','6','7','8','9','10'], 'comment_text': ['A', 'B', 'C', 'D','E','F','G','H','I','J','K']}] for cit in my_list: # 用zip将两个列表的同索引元素一一配对 for comment_id, comment_content in zip(cit["comment_code"], cit["comment_text"]): cursor.execute("""INSERT INTO comment (id, content) VALUES (%s, %s)""", (comment_id, comment_content)) # 批量提交,提升效率并保证一致性 self.con.commit()
关键说明
zip()函数会把comment_code和comment_text中位置相同的元素打包成元组,比如第一个元组是('1', 'A'),第二个是('18', 'B'),循环时就能直接取到每一对对应的值。- 将
commit()放在外层循环后,每次处理完所有配对元素再提交事务,比每次插入都提交更高效,也能避免部分插入成功部分失败的情况。 - 如果你的
id字段是数值类型(如DECIMAL、INT),可以把comment_id转换成对应类型,比如float(comment_id),避免数据库类型不匹配报错。
内容的提问来源于stack exchange,提问作者Andi Shehaj
相关产品推荐
相关产品推荐

