SQLAlchemy数据库插入数据,默认值不更新
问题描述: 通过sqlAlchemy进行数据库插入操作,某个字段设置了默认值,但是进行插入时,默认值每次插入的值都一样,不进行更新。
一、问题代码
这里的id和create_time的值都是以值的方式的来表示的,将函数值赋值给了默认值。所以在每次调用时,默认值就变成了常量于是就不会进行更新。
id = Column(String(50), nullable=False, primary_key=True, default=uuid.uuid4())
creat_time = Column(DateTime, nullable=True, default=datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S"))
update_time = Column(DateTime, nullable=True, default=datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S"))
deleted = Column(Integer, nullable=False, default=0)
remarks = Column(String(100), nullable=True)
二、修改代码
- 对于id的默认值赋值,我可以直接吧括号去掉,这样就把默认值设置为了一个uuid函数,这个函数返回的是uuid值,他每次都是变化的。
- 对于create_time默认值赋值,我们需要创建一个函数来进行赋值,函数返回当前时间。将默认值设置为该函数。
# 当前时间函数
def get_datetime():
return datetime.datetime.now().strftime("%Y-%m-%d_%H:%M:%S")
id = Column(String(50), nullable=False, primary_key=True, default=uuid.uuid4)
creat_time = Column(DateTime, nullable=True, default=get_datetime)
update_time = Column(DateTime, nullable=True, default=get_datetime)
deleted = Column(Integer, nullable=False, default=0)
remarks = Column(String(100), nullable=True)
三、结果查看
修改后,进行数据插入,可以看到插入结果对应各列的默认值都是不同的了。
以上,如果大家有什么其他方法或者修改建议欢迎评论留言~