PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Exécuter le schéma .sql dans psycopg2 en Python

Vous pouvez simplement utiliser execute :

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

bien que vous souhaitiez peut-être définir psycopg2 sur autocommit mode d'abord afin que vous puissiez utiliser la propre gestion des transactions du script.

Ce serait bien si psycopg2 offrait un mode plus intelligent où il lisait le fichier dans une instruction à la fois et l'envoyait à la base de données, mais à l'heure actuelle, il n'y a pas de tel mode pour autant que je sache. Il aurait besoin d'un analyseur assez solide pour le faire correctement face à $$ guillemets (et son $delimiter$ variant où le déimitateur peut être n'importe quel identifiant), standard_conforming_strings , E'' chaînes, corps de fonction imbriqués, etc.

Notez que cela ne sera pas travailler avec :

  • tout ce qui contient psql commandes antislash
  • COPIER .. DEPUIS STDIN
  • très saisie longue

... et ne fonctionnera donc pas avec les dumps de pg_dump