出于特定的安全原因,客户询问我们是否可以将“只写”数据库集成到Django Web应用程序中。我尝试创建一个数据库,然后通过以下方式限制对psql中某个表的访问:
REVOKE SELECT ON TABLE testapp_testmodel FROM writeonlyuser;
然后尝试在Django shell中保存模型......
p = new TestModel(test_field="testvalue")
p.save(using="writeonlydb")
...生成此错误:
ProgrammingError: permission denied for relation testapp_testmodel
我假设是因为ORM生成的SQL包含了新创建的对象id的返回值,该id被视为读取:
INSERT INTO "testapp_testmodel" ("test_field") VALUES ('testvalue') RETURNING "testapp_testmodel"."id"
因此,我的问题是,这基本上不可能吗?或者是否有其他方式?