gpt4 book ai didi

python - 关键字不能是表达式 - 在 sqlalchemy 中过滤

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:37 25 4
gpt4 key购买 nike

我用sqlalchemy创建了一个简单的数据库

class BlogPost(db.Model):
id = db.Column(db.Integer, primary_key=True)
post = db.Column(db.Text, nullable=False)
create_date = db.Column(db.DateTime, nullable=False)

create_date 的格式为 (year-month-day h:m:s.ms):

2018-02-20 21:45:37.591733

我用的是datetime.datetime

例如,我想过滤所有 year=2018 的帖子,这里我遇到了问题:

posts = BlogPost.query.filter_by(create_date.year=2018)

可以使用 datetime.year 但我不能将它用作 sqlalchemy 过滤中的表达式,上面的代码返回:

SyntaxError: keyword can't be an expression

正确的语法是:create_date=...,但我只需要比较年份,而不是整个数据对象

有没有可能以一种简单的方式做到这一点?有什么建议吗?

最佳答案

我的方法是使用between():

from datetime import datetime
dt_from = datetime(2018, 1, 1)
dt_to = datetime(2018, 12, 31, 23, 59, 59)

BlogPost.query.filter(db.between(BlogPost.create_date, dt_from, dt_to))

and_()表示法:

BlogPost.query.filter(db.and_(BlogPost.create_date >= dt_from, BlogPost.create_date <= dt_to))

文档中的更多信息:

关于python - 关键字不能是表达式 - 在 sqlalchemy 中过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49589647/

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