Du kan bara använda execute
:
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
även om du kanske vill ställa in psycopg2 till autocommit
läge först
så att du kan använda skriptets egen transaktionshantering.
Det skulle vara trevligt om psycopg2 erbjöd ett smartare läge där den läste filen i ett uttalande i taget och skickade det till DB, men för närvarande finns det inget sådant läge så vitt jag vet. Den skulle behöva en ganska solid parser för att göra det korrekt när den står inför $$
citat (och dess $delimiter$
variant där deimitern kan vara vilken identifierare som helst), standard_conforming_strings
, E''
strängar, kapslade funktionskroppar, etc.
Observera att detta inte gör det arbeta med:
- allt som innehåller
psql
omvänt snedstreck kommandon - KOPIERA .. FRÅN STDIN
- mycket lång input
... och fungerar därför inte med dumpar från pg_dump