gpt4 book ai didi

python - 在 SQLAlchemy 列属性中使用 python 日期函数

转载 作者:行者123 更新时间:2023-12-04 09:45:45 25 4
gpt4 key购买 nike

我在 SQLAlchemy 中有这些模型。它定义了我的系统的一个简单操作,即一个帐户喜欢一个帖子,因此每个帐户可以喜欢多个帖子,并且一个帖子可以被多个帐户喜欢(多对多),每个看起来都很好 execpt likes_per_day我希望它显示帐户每天喜欢的数量的列属性。当我运行此代码并保持运行时,它看起来像 date.today()将在运行时执行并始终向我显示 rundate 的喜欢次数,而不是今天。

所以我打算使用 column 属性获得每天的点赞数。这样做的正确方法是什么?

class Account(Base):
__tablename__ = 'account'

id = Column(
Integer,
primary_key=True
)

likes_per_day = column_property(
select([func.count(Like.id)])
.where(Like.account_id == id)
.where(func.date(Like.created_at) == date.today()) # Problem is here
.correlate_except(Like)
)

class Like(Base):
__tablename__ = 'like'

id = Column(
Integer,
primary_key=True
)

post_id = Column(
Integer,
ForeignKey('post.id')
)
account_id = Column(
Integer,
ForeignKey('account.id')
)
created_at = Column(
DateTime,
nullable=False,
default=datetime.utcnow,
)

最佳答案

使用方法:

    likes_per_day = column_property(
select([func.count(Like.id)])
.where(Like.account_id == id)
.where(func.date(Like.created_at) == bindparam(
'today',
callable_=lambda:date.today().isoformat()
)
)
.correlate_except(Like),
deferred=True
)
date函数返回 iso format日期时间,另一方面是 date.today()由于各种日期格式,sqlalchemy 不知道应该如何解析的日期对象。
所以通过明确声明日期格式,你应该得到你想要的结果。

关于python - 在 SQLAlchemy 列属性中使用 python 日期函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62127464/

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