python
data_error
ai_generated
true
sqlalchemy.exc.MultipleResultsFound: 对于 one() 找到了多行
sqlalchemy.exc.MultipleResultsFound: Multiple rows were found for one()
ID: python/sqlalchemy-query-too-many-rows
80%修复率
86%置信度
0证据数
2025-09-10首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.x | active | — | — | — |
根因分析
对返回多行的查询使用 one() 方法,而该方法期望只返回一行。
English
Using the one() method on a query that returns more than one row, which expects exactly one.
解决方案
-
95% 成功率 Use one_or_none() to handle zero or one result
user = session.query(User).filter_by(id=user_id).one_or_none() if user is None: # Handle not found pass -
90% 成功率 Use scalar() for single column queries
count = session.query(func.count(User.id)).scalar()
无效尝试
常见但无效的做法:
-
Using first() instead without checking
60% 失败
first() returns None if no rows, masking potential logic errors.
-
Ignoring the error and assuming one row
100% 失败
The error will still occur.