Sie können einfach execute
verwenden :
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
obwohl Sie vielleicht psycopg2 auf autocommit
setzen möchten Modus zuerst
damit Sie die eigene Transaktionsverwaltung des Skripts verwenden können.
Es wäre schön, wenn psycopg2 einen intelligenteren Modus anbieten würde, in dem es die Datei in einer Anweisung nach der anderen liest und an die DB sendet, aber derzeit gibt es keinen solchen Modus, soweit ich weiß. Es würde einen ziemlich soliden Parser brauchen, um es richtig zu machen, wenn es mit $$
konfrontiert wird Anführungszeichen (und sein $delimiter$
Variante, bei der der Deimiter ein beliebiger Bezeichner sein kann), standard_conforming_strings
, E''
Zeichenfolgen, verschachtelte Funktionskörper usw.
Beachten Sie, dass dies nicht geschieht arbeiten mit:
- alles was
psql
enthält Backslash-Befehle - COPY .. FROM STDIN
- sehr lange Eingabe
... und funktioniert daher nicht mit Dumps von pg_dump