flask-sqlalchemy中Datetime的创建时间和更新时间字段的设计

1.创建时间和更新时间

记录第一次创建的时间:default
记录每次更新数据的时间:onupdate
  • 数据库设计如下:

    # 创建时间
    create_at = db.Column(db.DateTime, default=datetime.datetime.now)
    # 更新时间
    update_at = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
    

    在这里插入图片描述

  • 数据库设计字段中datetime.datetime.now和datetime.datetime.now()的区别:

    datetime.datetime.now:动态的当前时间,也就是数据库添加、修改的时间
    datetime.datetime.now():固定的时间,程序部署的时间
    

2.flask-sqlalchemy默认值机制

  • 在我们设计数据库时,字段中设置的default其实并没有同步到mysql等数据库中,只是sqlalchemy在插入数据时帮助我们添加到了数据库中,如果想在mysql的表结构中看到这个字段有默认值需要使用server_default

    city = db.Column(db.String(10), server_default='北京')
    
  • 但是当我们要给布尔值类型指定server_default时,需要用text(“0”)或者text(“1”),text(“0”)代表False,text(“1”)代表True

    from sqlalchemy import text
    is_deleted = db.Column(db.Boolean, server_default=text('0'))
    
  • 因为mysql的datetime类型的数据不支持函数,所以不能通过server_default指定默认值为当前时间,只能通过sqlalchemy为我们提供的default

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值