如何为alembic创建的所有人设置不同的所有者?

时间:2013-10-09 03:00:29

标签: python database-migration alembic

因此,我们有一个受限制的用户,应该对表进行更新,插入和删除,以及可以创建,更改和删除表的用户。

我们使用alembic迁移数据库,因此当然第二个用户必须运行迁移,但第一个用户无权使用这些表。

当然,我可以运行一些postgres特定的代码来单独更改所有的alembic创建的所有者,但这不可能是正确的。我该怎么解决这个问题?或者这是一个postgres问题?我不知道如何在一个数据库的不存在的表上授予user1内容。

1 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,但我遇到了同样的问题,并为此找到了两个不错的解决方案:

1。 快速简便 - 将一般grant命令添加到升级模板(script.py.mako):我看起来如此:

def upgrade():
    ${upgrades if upgrades else "pass"}
    sql = "grant all on all tables in schema public to simpleuser"
    op.execute(sql)

2。 如果您对过于通用的grant语句不满意,可以尝试更改alembic中的create_table指令,以便在创建表后添加特定的grant命令。我发现这种态度过于复杂,但如果这是你想要的方向,请阅读alembic api here

P.S。在授予对表的访问权限时,如果有序列号,则永远不要忘记它们的序列