Windpicker-owo
c98091938e
fix(database): 修复 detached 对象延迟加载导致的 greenlet 错误
问题:
- CRUD 返回的对象在 session 关闭后变为 detached 状态
- 访问属性时 SQLAlchemy 尝试延迟加载,但没有 session
- 导致: greenlet_spawn has not been called
根本原因:
- SQLAlchemy 对象在 session 外被访问
- 延迟加载机制尝试在非异步上下文中执行异步操作
修复方案:
1. CRUDBase.get_by(): 在 session 内预加载所有列
2. CRUDBase.get_multi(): 在 session 内预加载所有实例的所有列
3. PersonInfo.get_value(): 添加异常处理,防御性编程
影响:
- 所有通过 CRUD 获取的对象现在都完全加载
- 避免了 detached 对象的延迟加载问题
- 可能略微增加初始查询时间,但避免了运行时错误
2025-11-19 23:31:10 +08:00
..
2025-11-19 23:30:21 +08:00
2025-11-19 23:31:10 +08:00
2025-11-19 23:13:20 +08:00
2025-11-19 23:25:26 +08:00
2025-03-19 20:27:34 +09:00
2025-11-19 23:30:51 +08:00
2025-11-19 23:13:20 +08:00
2025-11-19 23:30:26 +08:00
2025-11-19 23:30:51 +08:00
2025-11-19 23:13:20 +08:00
2025-11-19 23:22:47 +08:00
2025-11-19 23:13:20 +08:00