无法比较偏移原始日期时间和偏移感知日期时间-上次看到的选项

2024-04-26 13:28:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更新用户上次看到的列。为此,我正在尝试此用户模型:

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ...
    last_seen = db.Column(db.DateTime(timezone=True), default=datetime.datetime.utcnow)

    def ping(self):
        self.last_seen = datetime.datetime.utcnow()
        db.session.add(self)
        db.session.commit()

这段代码在用户执行某个操作时始终运行。

@mod.before_app_request
def before_request():
    current_user.ping()

这是错误:

TypeError: can't compare offset-naive and offset-aware datetimes

我该怎么解决?我正在使用postgres,我展示的代码很容易模拟这个问题。


Tags: 代码用户selftruedbdatetimerequestsession
1条回答
网友
1楼 · 发布于 2024-04-26 13:28:14

创建感知日期时间(具有时区的日期时间):

import pytz

self.last_seen = datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)

在这种情况下,您需要创建一个以UTC表示的当前时间的感知日期时间。

为此您需要^{}包(此包包含最新时区信息,该信息不是Python标准库的一部分)。

相关问题 更多 >