如何根据 sqlalchemy 中的两列进行过滤
Posted
技术标签:
【中文标题】如何根据 sqlalchemy 中的两列进行过滤【英文标题】:how can I filter base on two columns in sqlalchemy 【发布时间】:2022-01-14 08:58:57 【问题描述】:我有一个烧瓶应用程序和一个包含两列的表格,一列用于日期,一列用于小时。 我有一个约会表格,我想检查日期+时间是否已经用完。 我的模块如下所示:
form = DateForm()
if form.validate_on_submit():
if Appointment.query.filter_by(date=form.date.data).filter_by(hour=form.hour.data):
但看起来唯一接受的过滤器是日期,因为即使时间有空也会提出我的闪信。即,它因为日期而拒绝我 关于如何过滤时间列的任何建议? 我的目标是拒绝,例如,如果我的表中存在 10/12/2021 10:00,但如果 11:00 可用则接受。 我希望我已经清楚我想要实现的目标 提前致谢
【问题讨论】:
别忘了用.first()
、.all()
等来实际抓取对象...
Appointment.query.filter_by(date=form.date.data,hour=form.hour.data)
你可以使用filter_by设置多个过滤器,或者使用.filter和and_
表达式。
我已经测试过了,还是不行。
【参考方案1】:
终于可以解决了! 显然,这是一个格式类型的问题。我像这样添加到 form.hour.data 中: form.hour.data.strftime('%H:%M')
我也像这样改变了一点代码:
如果 Appointment.query.filter( 和_( 约会.date.like(form.date.data), Appointment.hour.like(form.hour.data.strftime('%H:%M')) ) ).first():
通过这个简单的修改,验证开始按我的预期工作。
【讨论】:
以上是关于如何根据 sqlalchemy 中的两列进行过滤的主要内容,如果未能解决你的问题,请参考以下文章