gpt4 book ai didi

python - onupdate 不覆盖当前日期时间值

转载 作者:太空狗 更新时间:2023-10-30 02:12:14 25 4
gpt4 key购买 nike

我正在为 SQLAlchemy 开发一个 Audit mixin,但不确定具体该怎么做。

我的类(class)是这样的:

class AuditColumns(object):

created_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False)

created_by = Column(String(64),
default=current_user,
nullable=False)

updated_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False,
onupdate=datetime.utcnow())
updated_by = Column(String(64),
default=current_user,
nullable=False,
onupdate=current_user)

更新的没问题,我只需要在表级别记录最新的更新;任何重要的审核都将保存在一个单独的表格中,详细说明更新/删除等。

我的问题是;我不想更新 created_dt/by 列。我知道,在我的代码中,我可以在更新对象时简单地省略它们;但另一个编码员可能;所以我真的想要么在每次更新之前确保它用自己覆盖值,要么在有人试图更改它时引发错误(后者是首选)。

我的 SQLAlchemy 技能仍在开发中,事件是一个需要弄清楚的地方吗?或者是否可以通过覆盖某些通用声明函数(如 save() 或 before_save() 或任何可能存在的函数)来完成某些事情?

我会继续寻找答案 - 但帮助找到解决方案(我不希望得到代码)是更可取的。

最佳答案

您的问题是您没有为“default”和“onupdate”使用可调用对象。 It's documented here .

对于日期应该是(注意没有括号):

default=datetime.datetime.utcnow
onupdate=datetime.datetime.utcnow

或用户名:

default=lambda: current_user.username

后一个示例应该是一个函数而不是 lambda,以对 current_user 进行各种安全检查(例如,如果匿名怎么办?)

关于python - onupdate 不覆盖当前日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com