sql >> Database teknologi >  >> RDS >> PostgreSQL

Udfør .sql-skema i psycopg2 i Python

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



  1. Løs automatisk fusionskonflikt med primær nøgle

  2. QUALIFY-lignende funktion i SQL Server

  3. Understøtter spring boot-applikationen OpenJDK

  4. Fejl ved erklæring af variabler i lagret procedure?