将日期不带时区的SQLAlchemy模型迁移到日期带时区的模型

我有一些这样定义的SQLAlchemy模型:

class TimeData(object):
    __table_args__ = {"extend_existing": True}

    created_on = Column(DateTime(timezone=True),server_default=db.func.now())
    updated_on = Column(
        DateTime(timezone=True),server_default=db.func.now(),server_onupdate=db.func.now(),onupdate=db.func.now(),)


class Article(db.Model,TimeData):
    id = Column(db.Integar,primary_key=True)
    title = Column(db.Text)
    contents = Column(db.Text)
    last_reviewed_on = Column(db.DateTime)


class Review(db.Model,TimeData):
    id = Column(db.Integer,primary_key=True)
    review = Column(db.Text)
    rating = Column(db.Integer)
    read_on = Column(db.DateTime)

正如人们所看到的那样,从DateTime类继承的TimeData对象用timezone=True标记,而模型本身中定义的日期则没有。序列化时会产生两种不同类型的日期字符串。

created_on被序列化为类似2019-11-25T01:53:05.576Z的末尾为Z,而read_on之类的值被序列化为2019-11-25T01:53:05.576而没有Z。由于我们存储了所有内容在UTC中,数据库中的日期信息很好。但是,当浏览器评估日期时,序列化的输出在客户端引起问题。带有Z的表示为UTC,而没有Z的表示为本地时间。

作为解决方案,迁移模型似乎不起作用。将timezone=True添加到模型后,flask-Migrate(Alembic)不会检测到模型中的任何更改。

如何使用TimeZone将日期迁移到那些日期?

budianxyl 回答:将日期不带时区的SQLAlchemy模型迁移到日期带时区的模型

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3039389.html

大家都在问