PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Execute o esquema .sql em psycopg2 em Python


Você pode simplesmente usar execute :
with self.connection as cursor:
    cursor.execute(open("schema.sql", "r").read())

embora você possa querer definir psycopg2 como autocommit modo primeiro para que você possa usar o próprio gerenciamento de transações do script.

Seria bom se o psycopg2 oferecesse um modo mais inteligente em que lesse o arquivo em uma instrução por vez e o enviasse para o banco de dados, mas no momento não existe esse modo até onde eu sei. Precisaria de um analisador bastante sólido para fazê-lo corretamente quando confrontado com $$ citando (e seu $delimiter$ variante onde o delimitador pode ser qualquer identificador), standard_conforming_strings , E'' strings, corpos de função aninhados, etc.

Observe que isso não trabalhar com:
  • qualquer coisa que contenha psql comandos de barra invertida
  • COPIAR .. DE STDIN
  • muito entrada longa

... e, portanto, não funcionará com dumps de pg_dump