Я пишу скрипт Python, который выполнит pg_restore. Как только восстановление завершится, я хотел бы, чтобы скрипт Python выполнял несколько операторов CREATE и GRANT для создания пользователей БД.Как программировать, когда завершается pg_restore
* Я не могу использовать pg_dumpall, чтобы добавить их в дамп, поскольку я переношу из AWS, а pg_dumpall запрещен. Таким образом, мне пришлось снять индивидуальные привилегии и написать сценарий с использованием шаблона/словаря, чтобы сделать это для меня.
** Мой вопрос: есть ли способ для моего скрипта Python проверить, что команда pg_restore завершена, чтобы она могла перейти к следующей части кода? Прямо сейчас, как только pg_restore стартует, он немедленно возвращается с УСПЕХОМ. Я ничего не смог найти. Обычно, в SQL Server, я WAITFOR DELAY в цикле, когда мне нужно что-то ждать (обычно JobAgent).
Спасибо
Привет всем. Просто натыкайтесь на вершину. Может кто-нибудь, пожалуйста, помогите мне с этим вопросом? Я на самом деле застрял, и у меня не было возможности попросить Google о помощи в этом вопросе. Спасибо – Wendy
Привет всем. Натыкается на вершину снова. Кто-нибудь знает, как мой скрипт Python может программно сказать, когда pg_dump завершил обработку? Я использую subprocess.Popen для выполнения команды pg_dump. Есть ли другой способ, который я мог бы использовать, чтобы заставить его приостановить работу до тех пор, пока команда не завершится? – Wendy
Похоже, это гораздо более простое решение, чем я думал. Я собираюсь поделиться своим решением здесь, в случае, если кто-то еще встретит это сообщение с похожим вопросом. Вместо использования subprocess.Popen для выполнения команды pg_dump, мне нужно было использовать subprocess.check_call. В документе [doc] (https://docs.python.org/3.4/library/subprocess.html) он явно говорит: «Запустите команду с аргументами. Дождитесь завершения команды. Если код возврата был равен нулю, тогда верните, иначе поднять CalledProcessError. " – Wendy