Как я могу установить другого владельца для всего, что создает alembic?

Таким образом, у нас есть пользователь с ограниченными правами, который должен обновлять, вставлять и удалять таблицы, и тот, кто может создавать, изменять и удалять таблицы.

Мы используем alembic для переноса базы данных, поэтому, конечно, второй пользователь должен запустить миграцию, но тогда у первого пользователя нет прав на использование таблиц.

Конечно, я мог бы запустить специальный код postgres для индивидуальной смены владельца на то, что создает alembic, но это не может быть правдой. Как я должен решить это? Или это проблема postgres? Я не вижу, как я могу предоставить материал user1 для несуществующих таблиц одной базы данных.

1 ответ

Решение

Я знаю, что это старый вопрос, но я столкнулся с той же проблемой и нашел два хороших решения для этого:

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. если вы недовольны слишком общим заявлением о предоставлении гранта, вы можете попытаться изменить create_table директива в alembic добавить конкретную команду предоставления после создания таблицы. Я нашел это отношение слишком излишне сложным, но если это ваше желаемое направление, пожалуйста, прочитайте об Alembic API здесь

PS при предоставлении доступа к таблицам никогда не забывайте их последовательности, если у них есть сериалы

Другие вопросы по тегам