如何阻止用户插入或更新某些列的值?

时间:2018-01-11 20:51:16

标签: python postgresql sqlalchemy

使用SQLAlchemy作为我的PostgreSQL数据库的ORM,我想在我的模型定义中添加一个约束(或类似的东西)来阻止用户:

1)将值插入到他们不应插入的列中(例如,我的自动递增主键或自动设置更新的date_modified。)

2)更新相同列中的值。

基本上 - 如果他们试图触摸特定列,我希望插入和/或更新失败。

修改

澄清一下:我想通过我的模型(继承SQLAlchemy' Base)来宣布这个。

2 个答案:

答案 0 :(得分:2)

PostgreSQL支持declarative column security(以及行安全性)

使用此模板:

GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]

示例:

GRANT INSERT (colA, colB) ON TABLE foo TO michi;

答案 1 :(得分:-1)

我能想到的最简单方法是使用:

final int (name) = x;

这样,在运行时无法更改该值。