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

如何用SQLAlchemy从empmaster表获取两列数据用于表单下拉框?

解决方案

要仅获取Employee_Number和Employee_Name两列数据,你可以通过SQLAlchemy的with_entities()方法精准指定查询字段,替代原来返回全表数据的query.all()。

方法1:用with_entities()查询指定列

修改app.py中的查询代码:

@app.route('/component/add', methods=['GET', 'POST'])
def componentadd():
    error_msg = ''
    success_msg = ''
    if request.method == 'GET':
        # 仅查询需要的两列
        empmaster_data = empmasterModel.query.with_entities(
            empmasterModel.Employee_Number, 
            empmasterModel.Employee_Name
        ).all()
        print(empmaster_data , "dbbbbbbbbbbbbb")
        return render_template('component/add.html', empmaster_data=empmaster_data)

此时empmaster_data是元组列表,每个元素格式为(Employee_Number值, Employee_Name值)。

模板中渲染下拉框

在add.html里生成下拉选项:

<select name="employee_select">
    {% for emp_num, emp_name in empmaster_data %}
        <option value="{{ emp_num }}">{{ emp_name }}</option>
    {% endfor %}
</select>

方法2:用values()获取字典格式结果

如果希望返回更直观的字典形式数据,可使用values()方法:

empmaster_data = empmasterModel.query.values('Employee_Number', 'Employee_Name')

模板中通过属性访问字段:

<select name="employee_select">
    {% for emp in empmaster_data %}
        <option value="{{ emp.Employee_Number }}">{{ emp.Employee_Name }}</option>
    {% endfor %}
</select>

额外注意点

你的empmasterModel中同时将Empnum和Employee_Number设为primary_key=True,这会创建复合主键。如果Employee_Number已经是唯一值,建议只保留一个主键(比如去掉Empnum的primary_key=True),避免后续操作出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:23