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

Esegui lo schema .sql in psycopg2 in Python

Puoi semplicemente usare execute :

with self.connection as cursor:
    cursor.execute(open("schema.sql", "r").read())

anche se potresti voler impostare psycopg2 su autocommit prima la modalità in modo da poter utilizzare la gestione delle transazioni dello script.

Sarebbe bello se psycopg2 offrisse una modalità più intelligente in cui legge il file in un'istruzione alla volta e lo invia al DB, ma al momento non esiste una modalità del genere per quanto ne so. Avrebbe bisogno di un parser abbastanza solido per farlo correttamente di fronte a $$ citando (e il suo $delimiter$ variante in cui il deimiter può essere qualsiasi identificatore), standard_conforming_strings , E'' stringhe, corpi funzione nidificati, ecc.

Nota che questo non lavorare con:

  • qualsiasi cosa che contenga psql comandi barra inversa
  • COPIA.. DA STDIN
  • molto input lungo

... e quindi non funzionerà con i dump da pg_dump