python定时取数据库数据类型_格式数据库日期时间在烧瓶中自动赋值

我正在迁移主机,新主机使用更新版本的MySQL,它对接受的datetime值的格式要求更严格。我知道我可以关闭它,但我想找到一个解决方案,将这些值正确地转换为正确的格式。最好是一个可以很容易地在我需要更新的许多模型之间交换(100个左右)。在

如果我找不到在模型级别上更新它的方法,我可能需要查找设置这些值的数千个位置。在

我在这里裁剪了一个示例模型:class Timesheet(BaseModel, db.Model):

__tablename__ = "timesheet"

timesheet_id = db.Column(db.Integer, primary_key=True)

created = db.Column(db.DateTime, default=datetime.utcnow)

updated = db.Column(db.DateTime)

employee_id = db.Column(db.Integer, db.ForeignKey('user.employee_id'))

description = db.Column(db.String(255))

hours = db.Column(db.Numeric(9, 2))

billable = db.Column(db.Boolean, default=False)

retainer = db.Column(db.Boolean, default=False)

client_id = db.Column(db.Integer, db.ForeignKey('client.client_id'), default=None)

project_id = db.Column(db.Integer, db.ForeignKey('project.project_id'), default=None)

task_id = db.Column(db.Integer, default=None)

timesheet_date = db.Column(db.DateTime, default=datetime.utcnow)

我希望有办法修改数据库日期时间因此,当提供ISO8601日期时间字符串('YYYY-MM-DDT00:00:00.000Z')时,它将返回一个真正的Python datetime对象

从以下方面寻找:

^{pr2}$

然后,列定义将更改为:updated = db.Column(FormattedDateTime)

…这样当SQLAlchemy发送到MySQL时,它将自动以正确的格式保存。在

我研究过mixin并四处寻找可以实现这一目标的方法,但似乎找不到任何好的解决方案。非常感谢帮助。在

更新:

这是我到目前为止所做的工作的草稿。。。即使在查询中对字段进行过滤/比较时,它似乎也能很好地运行,但还没有得到很好的测试。在class TFDateTime(TypeDecorator):

impl = DATETIME

def process_bind_param(self, value, dialect):

if value is None:

return None

print("process_bind_param", value, type(value))

if type(value) == datetime or type(value) == date:

return value

elif type(value) == str:

return parse(value, ignoretz=True)

else:

return None

def process_result_value(self, value, dialect):

if value is None:

return None

print("process_result_value", value, type(value))

return value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值