Du kan bare bruge execute
:
with self.connection as cursor:
cursor.execute(open("schema.sql", "r").read())
selvom du måske ønsker at indstille psycopg2 til autocommit
tilstand først
så du kan bruge scriptets egen transaktionsstyring.
Det ville være rart, hvis psycopg2 tilbød en smartere tilstand, hvor den læste filen i en erklæring ad gangen og sendte den til DB, men på nuværende tidspunkt er der ingen sådan tilstand, så vidt jeg ved. Det ville have brug for en ret solid parser for at gøre det korrekt, når det står over for $$
citering (og dens $delimiter$
variant, hvor deimiteren kan være en hvilken som helst identifikator), standard_conforming_strings
, E''
strenge, indlejrede funktionslegemer osv.
Bemærk, at dette ikke vil arbejde med:
- alt, der indeholder
psql
omvendt skråstreg kommandoer - KOPIERING .. FRA STDIN
- meget langt input
... og vil derfor ikke fungere med dumps fra pg_dump