You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改SQLAlchemy主键查询代码以消除弃用警告?

解决SQLAlchemy中Session.query().get()的弃用警告

我使用以下代码通过主键查询对象时,收到「Deprecated features detected」弃用警告,请问如何重写该查询以解决此警告?

原代码:

def find_by_id(self, obj_id):
    with self.session() as s:
        x = s.query(User).get(obj_id)
        return x

警告信息(翻译后):

LegacyAPIWarning: 检测到已弃用的API特性!这些特性与SQLAlchemy 2.0不兼容。为了在更新应用程序前避免不兼容的升级,请确保依赖文件固定为"sqlalchemy<2.0"。设置环境变量SQLALCHEMY_WARN_20=1以显示所有弃用警告。设置环境变量SQLALCHEMY_SILENCE_UBER_WARNING=1以屏蔽此消息。
    x = s.query(User).get(obj_id)

重写方案

SQLAlchemy 2.0及后续版本中,Session.query() API已被弃用,推荐直接使用Session实例的get()方法来通过主键查询对象,该方法直接接收模型类和主键值作为参数,用法更简洁且符合新版本规范。

重写后的代码:

def find_by_id(self, obj_id):
    with self.session() as s:
        x = s.get(User, obj_id)
        return x

如果是复合主键的场景,只需将主键值以元组形式传入即可:

# 示例:复合主键(id, name)
x = s.get(User, (obj_id, obj_name))

内容的提问来源于stack exchange,提问作者sfgroups

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:10:38