gpt4 book ai didi

python - Flask-SQLAlchemy 在单行上迭代列值

转载 作者:太空宇宙 更新时间:2023-11-03 13:47:20 24 4
gpt4 key购买 nike

我是 Flask 和 Python 的新手,所以提前致歉。我正在使用 Flask-SQLAlchemy 返回数据库行,一切正常:

customer = Customers.query.filter_by(cat_id = page).first()
return render_template('test.html',
customer = customer
)

我的问题是我试图找出如何使用循环在我的神社模板中显示该行的列值。这是解决此问题的最佳方法吗?我收到“对象不可迭代”错误,我有点理解,但我不确定如何解决它。

在我目前使用的模板中:

{{customer.id}}
{{customer.name}}
{{customer.area}}
etc.

但我想做这样的事情:

{% for item in customer %}
{{item[column]}}
{% endfor %}

查询可以转换成字典吗?

我到处搜索,试图解决这个问题,但没有成功,这让我觉得我可能走错了路。

非常感谢任何建议。


更新:
我认为这是进步。主要变化是在 views.py 中,我在其中添加了 .__dict__ ,根据我的阅读,它访问了 SQLAlchemy 对象的内部 __dict__ 。 for 模板循环现在输出列值,但它也输出许多其他不需要的东西。无论如何要清理它?

模型.py

class Customers(db.Model):
id = db.Column(db.Integer, primary_key = True)
cust_name = db.Column(db.String(64))
cust_area = db.Column(db.String(64))
cat_id = db.Column(db.Integer(8), index = True)

View .py

customer = Customers.query.filter_by(cat_id = page).first()
return render_template('test.html',
customer = customer.__dict__
)

测试.html

{% for key, value in customer.items() %}
{{ key }} , {{ value }}
{% endfor %}

输出

cust_name , John _sa_instance_state , 
<sqlalchemy.orm.state.InstanceState object at 0x03961D50> id , 1 cat_id , 2 cust_area , England

最佳答案

首先在您的 View 中将客户行转换为字典。

customer = Customers.query.filter_by(cat_id = page).first()
customer_dict = dict((col, getattr(customer, col)) for col in customer.__table__.columns.keys())
return render_template('test.html',
customer_dict = customer_dict
)

您可以在 customer_dict 行上使用 iteritems()。

{% for key, value in customer_dict.iteritems() %}

{{ key }} , {{ value }}

{% endfor %}

关于python - Flask-SQLAlchemy 在单行上迭代列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16947276/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com