Можете просто да използвате execute :
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
въпреки че може да искате да настроите psycopg2 на autocommit първи режим
така че можете да използвате собственото управление на транзакциите на скрипта.
Би било хубаво, ако psycopg2 предлагаше по-интелигентен режим, при който четеше файла в израз по-веднъж и го изпращаше в DB, но в момента няма такъв режим, доколкото знам. Ще се нуждае от доста солиден анализатор, за да го направи правилно, когато е изправен пред $$ цитиране (и неговия $delimiter$ вариант, където деимитерът може да бъде всеки идентификатор), standard_conforming_strings , E'' низове, тела на вложени функции и др.
Имайте предвид, че това няма работа с:
- всичко, съдържащо
psqlкоманди с обратна наклонена черта - КОПИРАНЕ .. ОТ STDIN
- много дълъг вход
... и следователно няма да работи с дъмпове от pg_dump