Можете просто да използвате 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