使用sqlalchemy模型创建时间务必注意【一个很大的坑】,为什么时间永远都不变

阅读: 评论:0

使用sqlalchemy模型创建时间务必注意【一个很大的坑】,为什么时间永远都不变

使用sqlalchemy模型创建时间务必注意【一个很大的坑】,为什么时间永远都不变

 温馨提示:使用sqlalchemy模型创建时间务必注意【一个很大的坑】


                参数:
                    create_time:必须在__init__方法中初始化当前时间now,因为这里每一次创建和读取的时间都是最新的!
                        务必注意:不能再创建字段的时候使用default&#_now_time_strftime()的原因:
                 default默认赋值仅会调用一次,也就是说now时间获取一次之后,后续所有的实例都会copy第一次的值进行default赋值 

   class OwnBaseModel(db.Model, ClassIterator):"""1、Flask-SQLAlchemy创建table时,如何声明基类(这个类不会创建表,可以被继承)2、方法就是把__abstract__这个属性设置为True,这个类为基类,不会被创建为表!3、只要设置了__abstract__ = True,这个基类无法实现relationship关联方法【只能由子类继承去关联】"""__abstract__ = Trueid = db.Column(db.Integer, primary_key=True, autoincrement=True)create_time = db.Column(db.String(20), nullable=True)status = db.Column(db.Integer, default=1)# 1、structor装饰器的作用:兼容SQLachemy-ORM数据库模式创建user实例对象能去调用__init__方法# 2、SQLachemy-ORM创建user【如:查询】不是通过传统的User()创建,所以默认情况下不会调用__init__方法# 3、对于普通的User()创建对象,此装饰器不影响正常初始化调用!&#structordef __init__(self):# super仅会调用第一个父类db.Model的方法super().__init__()# 第二个父类开始,类名.方法名(self)的方式来调用!ClassIterator.__init__(self)self.iter_keys = ["id", "create_time", "status"]"""温馨提示:使用sqlalchemy模型创建时间务必注意【一个很大的坑】参数:create_time:必须在__init__方法中初始化当前时间now,因为这里每一次创建和读取的时间都是最新的!务必注意:不能再创建字段的时候使用default&#_now_time_strftime()的原因:default默认赋值仅会调用一次,也就是说now时间获取一次之后,后续所有的实例都会copy第一次的值进行default赋值总结来说:default只能赋值静态值,不能获取动态值另外注意:每一次存储或读取都会执行初始化,为了显示时间和数据库一致,如果数据库的时间存在就选择数据库的时间为准!""&#ate_time = ate_time _now_time_strftime()

 

本文发布于:2024-01-28 08:51:15,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064030796239.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   永远都   模型   很大   sqlalchemy
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23