如何在django迁移操作中组合migrations.RunPython和migrations.RunSQL

时间:2018-03-20 16:41:42

标签: django python-3.x postgresql multi-tenant django-migrations

我正在尝试编写一个迁移,它为我的多租户postgres数据库中的每个模式授予只读权限。

每个模式运行一次迁移,因此我想要捕获运行它的模式的名称,然后在我的SQL语句中使用该schema_name为该模式授予权限。

在django中,我可以创建一个名为' RunPython'的迁移操作,并且从该python代码中我可以确定迁移当前正在运行的模式(schema_editor.connection.connection_name)。

我想要做的是将该信息传递给下一个迁移操作,即" RunSQL",以便我运行的SQL可以是:

" GRANT选择SCHEMA中的所有表格{schema_name_from_python_code} to readaccess;"

如果有人能对这个问题有所了解,我们将不胜感激。干杯!

1 个答案:

答案 0 :(得分:0)

我能够通过摆脱migrations.runSQL来解决这个问题。我只是有migrations.RunPython。从那个python forward_func中我能够访问DB并在那里写sql(带有必要的字符串插值)

:)