Exécuter le schéma .sql dans psycopg2 en Python
J'ai un PostgreSQL schéma stockées dans .fichier sql. Il ressemble à quelque chose comme:
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
facebook_id TEXT NOT NULL,
name TEXT NOT NULL,
access_token TEXT,
created INTEGER NOT NULL
);
Comment exécuter ce schéma après la connexion à la base de données?
Mon code Python qui fonctionne pour les bases de données SQLite:
# Create database connection
self.connection = sqlite3.connect("example.db")
# Run database schema
with self.connection as cursor:
cursor.executescript(open("schema.sql", "r").read())
Mais la psycopg2 n'a pas de executescript
méthode sur le curseur. Alors, comment puis-je y parvenir?
source d'informationauteur linkyndy
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser
execute
:si vous souhaitez ensemble psycopg2 à
validation
mode première de sorte que vous pouvez utiliser le script propre à la gestion des transactions.Ça serait bien si psycopg2 offert une plus intelligente de la mode, où il lire le fichier dans un énoncé-à-un-temps et l'a envoyé à la DB, mais à présent, il n'y a pas de mode autant que je sache. Il avait besoin d'un assez solide analyseur de le faire correctement face à
$$
citant (et ses$delimiter$
variante où la deimiter peut être un identificateur quelconque),standard_conforming_strings
E''
chaînes, imbriqués les corps des fonctions, etc.Noter que ce sera pas de travail avec:
psql
barre oblique inverse commandes... et donc de ne plus travailler avec les dumps de
pg_dump
Je ne peux pas répondre aux commentaires de la réponse choisie par le manque de réputation, donc je vais faire une réponse pour aider à la
COPY
question.Selon le volume de votre DB,
pg_dump --inserts
sortiesINSERT
s au lieu deCOPY
s