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

Flask Python应用中无法提取SQLite数据表指定行指定列的单个数据

Flask Python应用中无法提取SQLite数据表指定行指定列的单个数据

我来帮你梳理下问题所在,以及对应的解决办法~

问题根源

你现在的代码里用了TDS.query.all(),这个方法会返回数据表中所有行的对象列表。之后你循环遍历这个列表时,每次的td都是单独一行的数据对象,td.Income_under_salary就是这一行对应列的单个整数值。

你看到的9 415244 38024其实是三次循环分别打印的结果(每行的该列值),而不是一个包含三个元素的列表。另外result[0]的写法本身就有问题——因为result是整数类型,根本不支持索引访问,只是可能你实际运行的代码里没写[0],直接打印了result才得到这三个值。

至于HTML模板里的报错,是因为你把单个整数result传给了模板,却用for循环去遍历它,整数当然不是可迭代对象,所以会抛出TypeError。

解决方案

1. 只获取第一行的指定列值

如果你明确要拿第一行的Income_under_salary(也就是你想要的9),不需要用all(),直接用first()方法获取单个行对象:

# 获取数据表的第一行数据
first_row = TDS.query.first()
if first_row:  # 先判断是否存在数据,避免空值报错
    target_value = first_row.Income_under_salary
    print(target_value)  # 这里会输出9

然后把target_value传给模板,直接渲染即可,不需要循环:

<div>{{ target_value }}</div>

2. 按条件获取特定行

如果不是要第一行,而是要根据某个条件(比如id=1)获取指定行,用filter_by配合first():

target_row = TDS.query.filter_by(id=1).first()
if target_row:
    target_value = target_row.Income_under_salary

3. 遍历所有行并在模板展示

如果你确实需要展示所有行的该列数据,后端要把所有行的列表传给模板,然后在模板里遍历每一行再取对应列:

# 后端:获取所有行数据
all_tds = TDS.query.all()
# 把列表传给模板,这里假设模板名为your_page.html
return render_template('your_page.html', tds_list=all_tds)
<!-- 模板:遍历每个行对象,取出对应列的值 -->
{% for row in tds_list %}
    <div>{{ row.Income_under_salary }}</div>
{% endfor %}

这样就能正确渲染每一行的Income_under_salary值,不会再出现迭代整数的错误啦。

备注:内容来源于stack exchange,提问作者DBV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:28:02