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

SQLAlchemy原生查询按列名访问字段报错,求解决方案

解决方法

当你使用session.execute()执行原生SQL时,默认返回的结果是元组(旧版本SQLAlchemy中为普通元组),元组仅支持整数索引访问,因此用字符串列名会触发tuple indices must be integers or slices, not str错误。要通过列名访问字段,可采用以下几种常用方式:

方式一:返回字典映射结果

调用Result对象的mappings()方法,将结果转换为字典格式,即可直接通过列名字符串访问:

games = session.execute(statement=text('select game.id as id, * from game')).mappings().all()
for game in games:
    print(game['id'])

方式二:返回命名元组

使用namedtuples()方法,结果会以命名元组形式返回,你可以通过属性名(对应列名)访问字段:

games = session.execute(statement=text('select game.id as id, * from game')).namedtuples().all()
for game in games:
    print(game.id)

方式三:使用ORM模型查询(若有对应模型)

如果已经定义了Game ORM模型,直接用session.query()查询会返回模型实例,天然支持属性访问:

from your_module import Game

games = session.query(Game).all()
for game in games:
    print(game.id)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:02:37