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

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
0证据数
2025-08-12首次发现

版本兼容性

版本状态引入弃用备注
3.x active

根因分析

当查询返回多行时使用 .one()。

English

Using .one() when query returns more than one row.

generic

解决方案

  1. 95% 成功率 Use .one_or_none() if row may not exist.
    user = session.query(User).filter_by(email='[email protected]').one_or_none()
  2. 90% 成功率 Add additional filter to ensure uniqueness.
    user = session.query(User).filter(User.id == 1).one()

无效尝试

常见但无效的做法:

  1. Using .first() without checking for uniqueness. 70% 失败

    Returns first row but may miss intended unique row.

  2. Catching exception and returning None. 60% 失败

    Hides potential data integrity issues.