Je kunt gewoon execute
. gebruiken :
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
hoewel je misschien psycopg2 wilt instellen op autocommit
modus eerst
zodat u het eigen transactiebeheer van het script kunt gebruiken.
Het zou leuk zijn als psycopg2 een slimmere modus zou aanbieden waarin het het bestand in een verklaring-voor-een-tijd leest en naar de DB stuurt, maar op dit moment is er geen dergelijke modus voor zover ik weet. Het heeft een redelijk solide parser nodig om het correct te doen wanneer het wordt geconfronteerd met $$
citeren (en zijn $delimiter$
variant waarbij de deimiter elke identifier kan zijn), standard_conforming_strings
, E''
strings, geneste functieteksten, enz.
Merk op dat dit niet werken met:
- alles dat
psql
. bevat backslash-opdrachten - KOPIE .. VAN STDIN
- heel lange invoer
... en werkt daarom niet met dumps van pg_dump