sql >> Databasteknik >  >> RDS >> PostgreSQL

Kör .sql-schemat i psycopg2 i Python

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



  1. Avbryt lika perioder i slutet av månaden

  2. hur man formaterar datum som kommer från MYSQL

  3. MySQL:Vad är en sida?

  4. Hur hämtar jag en lista över skapade ID:n för massinsättning i Active Record?