python
runtime_error
ai_generated
true
sqlalchemy.orm.exc.MultipleResultsFound:one() 找到了多行
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one()
ID: python/sqlalchemy-orm-query-multiple-results
80%修复率
85%置信度
0证据数
2025-08-12首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.x | active | — | — | — |
根因分析
当查询返回多行时使用 .one()。
English
Using .one() when query returns more than one row.
解决方案
-
95% 成功率 Use .one_or_none() if row may not exist.
user = session.query(User).filter_by(email='[email protected]').one_or_none()
-
90% 成功率 Add additional filter to ensure uniqueness.
user = session.query(User).filter(User.id == 1).one()
无效尝试
常见但无效的做法:
-
Using .first() without checking for uniqueness.
70% 失败
Returns first row but may miss intended unique row.
-
Catching exception and returning None.
60% 失败
Hides potential data integrity issues.