1.5 KiB
1.5 KiB
Row 对象转换错误修复
错误信息
'dict' object has no attribute '_mapping'
问题原因
PageUtil.paginate 可能已经将 Row 对象转换为字典了,我们再次尝试转换时出错。
修复方案
添加类型检查,只在需要时才转换:
# 执行查询并转换为字典列表
result = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
# 如果是分页查询,需要转换 rows 为字典
if is_page and hasattr(result, 'rows') and result.rows:
# 检查第一行是否已经是字典
if not isinstance(result.rows[0], dict):
result.rows = [dict(row._mapping) if hasattr(row, '_mapping') else dict(row) for row in result.rows]
elif not is_page and result:
# 检查第一行是否已经是字典
if not isinstance(result[0], dict):
result = [dict(row._mapping) if hasattr(row, '_mapping') else dict(row) for row in result]
return result
修复逻辑
- 检查是否为空: 先检查
result.rows或result是否为空 - 检查类型: 检查第一行是否已经是字典
- 条件转换: 只在不是字典时才转换
- 安全转换: 使用
hasattr检查是否有_mapping属性
验证步骤
1. 重启后端服务
cd ruoyi-fastapi-backend
python main.py
2. 测试 API
curl http://localhost:9099/system/test_work_order/list
3. 检查响应
应该返回正常的 JSON 数据,不再报错。
完成时间
2026-01-09 01:50