Как я могу установить другого владельца для всего, что создает 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 при предоставлении доступа к таблицам никогда не забывайте их последовательности, если у них есть сериалы