Możesz po prostu użyć execute :
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
chociaż możesz ustawić psycopg2 na autocommit najpierw tryb
dzięki czemu możesz korzystać z własnego zarządzania transakcjami skryptu.
Byłoby miło, gdyby psycopg2 oferował inteligentniejszy tryb, w którym odczytuje plik w wyciągu na raz i wysyła go do bazy danych, ale obecnie nie ma takiego trybu, o ile wiem. Potrzebowałby dość solidnego parsera, aby zrobić to poprawnie w obliczu $$ cytowanie (i jego $delimiter$ wariant, w którym deimiter może być dowolnym identyfikatorem), standard_conforming_strings , E'' ciągi, zagnieżdżone ciała funkcji itp.
Pamiętaj, że to nie pracować z:
- wszystko zawierające
psqlpolecenia odwrotnego ukośnika - KOPIUJ .. Z STDIN
- bardzo długie wejście
... i dlatego nie będzie działać ze zrzutami z pg_dump