can't compare offset-naive and offset-aware datetimes - last_seen option
本问题已经有最佳答案,请猛点这里访问。
我想更新用户上次看到的列。为此,我正在尝试此用户模型:
1 2 3 4 5 6 7 8 9 | 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() |
以及在用户执行某些操作时始终运行的代码。
1 2 3 | @mod.before_app_request def before_request(): current_user.ping() |
这是错误:
1 | TypeError: can't compare offset-naive and offset-aware datetimes |
我怎么解决这个问题?我正在使用Postgres,这个问题很容易用我显示的代码模拟。
创建一个感知的日期时间(具有时区的日期时间):
1 2 3 | import pytz self.last_seen = datetime.datetime.utcnow().replace(tzinfo=pytz.UTC) |
在这种情况下,您将希望创建一个以当前时间为UTC的感知日期时间。
为此,您需要