Ответ 1
Вы можете просто использовать execute
:
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
хотя вы можете установить psycopg2 в autocommit
режима первого, так что вы можете использовать скрипт собственного управления транзакциями.
Было бы неплохо, если psycopg2 предложил более умный режим, когда он читал файл в инструкции по времени и отправлял его в БД, но в настоящее время нет такого режима, насколько я знаю. Для корректного выполнения этого вопроса понадобился бы достаточно сильный парсер, когда он столкнулся с $$
quoting (и его $delimiter$
-граничным $delimiter$
-разделом, где разделителем может быть любой идентификатор), standard_conforming_strings
, строки E''
строками вложенных функций и т.д.
Обратите внимание, что это не сработает:
- что-либо содержащее команды
psql
backslash - КОПИРОВАНИЕ.. ИЗ СТДИН
- очень длинный ввод
... и поэтому не будет работать с дампами из pg_dump