Sqlalchemy模型创建时间避弹坑

创建的模型

from back.database import Base
from sqlalchemy import String, Integer, DateTime, Boolean, Column
from datetime import datetime
class User(Base):
    __tablename__ = 'user'
    ID = Column(Integer, primary_key=True, autoincrement=True)
    Name = Column(String(30), nullable=False)
    Code = Column(String(30), nullable=False, unique=True)
    Age = Column(Integer, default=18)
    PassWord = Column(String(200), nullable=False)
    CreateTime = Column(DateTime, default=datetime.now())
  • 上面代码中CreateTime字段默认值为获取当前时间

  • 启动程序后,调用接口测试,code分别是string1 、string2image

  • 查看数据库表中的数据,发现创建时间都是一样的,不论间隔多久调用接口。貌似就是程序跑起来后获取到的当前时间,显然不符合实际的需求image

改造

from back.database import Base
from sqlalchemy import String, Integer, DateTime, Boolean, Column, func
from datetime import datetime

# 用户表
class User(Base):
    __tablename__ = 'user'
    ID = Column(Integer, primary_key=True, autoincrement=True)
    Name = Column(String(30), nullable=False)
    Code = Column(String(30), nullable=False, unique=True)
    Age = Column(Integer, default=18)
    PassWord = Column(String(200), nullable=False)
    CreateTime = Column(DateTime, default=func.now())#重点只改了这里

sqlalchemy.fun.now源码

class now(GenericFunction):
    """The SQL now() datetime function.

    SQLAlchemy dialects will usually render this particular function
    in a backend-specific way, such as rendering it as ``CURRENT_TIMESTAMP``.

    """

    type = sqltypes.DateTime
    inherit_cache = True
至此每次调用接口后,创建时间就是实时获取的当前时间了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值