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