Flask-SQLAlchemy-default-time-setting-problem
1.遇到的问题
把flask时间 created 设置为UTC时间
class PyLink(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(300), nullable=False)
link = db.Column(db.String(1000), nullable=False)
avatar = db.Column(db.String(1000), nullable=False)
brief = db.Column(db.String(1000), nullable=False)
created = db.Column(db.DateTime, default=datetime.now)
修改添加timezone.utc参数
class PyLink(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(300), nullable=False)
link = db.Column(db.String(1000), nullable=False)
avatar = db.Column(db.String(1000), nullable=False)
brief = db.Column(db.String(1000), nullable=False)
created = db.Column(db.DateTime, default=datetime.now(timezone.utc))
之后的多条数据时间都为Flask的启动时间
2.问题原因
1.created = db.Column(db.DateTime, default=datetime.now())
2. created = db.Column(db.DateTime, default=datetime.now)
1.中datetime.now()生成一个固定的时间, Flask程序部署的时间,所有的数据都是这个固定时间
2.datetime.now生成当前时间
3.解决办法
class PyLink(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(300), nullable=False)
link = db.Column(db.String(1000), nullable=False)
avatar = db.Column(db.String(1000), nullable=False)
brief = db.Column(db.String(1000), nullable=False)
created = db.Column(db.DateTime, default=datetime.utcnow)
把时间函数修改为datetime.utcnow
最后修改: 2022-08-20T22:40:59
版权声明:署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
comment 评论