sqlalchemy 创建一个根据其他列自动更新的列

Posted

技术标签:

【中文标题】sqlalchemy 创建一个根据其他列自动更新的列【英文标题】:sqlalchemy create a column that is autoupdated depending on other columns 【发布时间】:2020-01-21 09:17:50 【问题描述】:

如果一个或多个列(可能在另一个表中)被更新,我需要在一个表中创建一个自动更新的列,但也应该可以直接编辑这个列(除非另有说明,否则值应该保存在 sql 中其他列被更新,在这种情况下应用第一个逻辑)

我尝试了 column_property,但它似乎只是 python 内部的构造,并不代表实际的列

我也试过 hybrid_property 和 default,都没有做到这一点

这看起来像插入/更新触发器,但是我想知道“优雅”的方式来声明它,如果它甚至可能的话

我对 postgres 上的表格使用声明式样式

我不会在 sqlalchemy 之外对 sql 进行任何更新

【问题讨论】:

【参考方案1】:

绝对看起来像插入/更新触发器。但是如果我是你,我会用 2 个查询将这个逻辑封装在 python 中,这样会更清楚

【讨论】:

我绝对可以,但我一直在寻找更简单的开箱即用解决方案***.com/questions/7888846/trigger-in-sqlachemy 这似乎是它,但不确定它是否可以更新其他字段,使用 DDL 表达式的解决方案似乎非常脏 我可能会使用我用来修改表(它唯一的一个)而不是触发器之类的方法,如果有人有更好的建议,请分享它

以上是关于sqlalchemy 创建一个根据其他列自动更新的列的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQLAlchemy 创建一个不是主键的标识列?

SQLALchemy:根据列键/名称获取行元素

SQLAlchemy:如何根据其后端有条件地选择列的类型

SqlAlchemy 将新字段添加到类并在表中创建相应的列

ORM sqlalchemy 创建模式集列等于计算

如何根据 sqlalchemy 中的两列进行过滤