使用PyMySQL构建JSON返回重复结果的原因及解决方法
问题解决:PyMySQL查询结果构建JSON时数据重复的问题
你的问题出在**result.append(d)的位置**——把它放在了遍历字段的内层循环里,导致每处理一个字段,就会把还没构建完的字典添加一次到结果列表里。最终返回的行数是「记录数 × 字段数」,这就是你明明只有10条记录却拿到104条重复数据的原因。
修正方法很简单,把result.append(d)移到外层循环(遍历每行数据的循环)的末尾,等整行的所有字段都添加到字典d之后,再把完整的字典加入结果列表:
search_sql = f"SELECT * FROM Games" cur.execute(search_sql) rows = cur.fetchall() result = [] for row in rows: d = {} for i, col in enumerate(cur.description): d[col[0]] = row[i] # 整行字段处理完成后,再添加到结果列表 result.append(d) return result
另外,还有更简洁的写法可以避免手动构建字典:直接使用PyMySQL的DictCursor,它会自动把查询结果以字典列表的形式返回:
import pymysql.cursors # 建立连接时指定游标类型为DictCursor connection = pymysql.connect( host='你的数据库地址', user='用户名', password='密码', database='数据库名', cursorclass=pymysql.cursors.DictCursor ) with connection.cursor() as cur: search_sql = "SELECT * FROM Games" cur.execute(search_sql) result = cur.fetchall() # 直接拿到字典组成的列表 return result
内容的提问来源于stack exchange,提问作者True_False_AX10M
相关产品推荐
相关产品推荐

