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
psql
polecenia odwrotnego ukośnika - KOPIUJ .. Z STDIN
- bardzo długie wejście
... i dlatego nie będzie działać ze zrzutami z pg_dump