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 对象的延迟加载问题 - 可能略微增加初始查询时间,但避免了运行时错误
This commit is contained in:
@@ -200,7 +200,7 @@ class RelationshipFetcher:
|
||||
"user_aliases": relationship.user_aliases,
|
||||
"relationship_text": relationship.relationship_text,
|
||||
"preference_keywords": relationship.preference_keywords,
|
||||
"relationship_score": relationship.affinity,
|
||||
"relationship_score": relationship.relationship_score,
|
||||
}
|
||||
|
||||
# 5.1 用户别名
|
||||
|
||||
Reference in New Issue
Block a user