0

I'm trying to replicate the table structure of an existing PostgreSQL database. I have 2 databases currently, A and B. I used the "pg_dump -s" command and generated the sql query to create the tables of A. In my python script, I have the following code to create the same structure in database B:

con2 = psycopg2.connect(database="Archives", user="postgres", password="root", host="127.0.0.1", port="5432")

dbexe = """
--
-- PostgreSQL database dump
--

-- Dumped from database version 9.6.0
-- Dumped by pg_dump version 9.6.0

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;

--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: 
--

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;


--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: 
--
several thousand more lines ...."""

cur2 = con2.cursor()
cur2.execute(dbexe)
print("done")

The code seems to run fine but when I check database B I don't see any tables. Any suggestions as to why this may be happening?

1 Answer 1

1

You must commit the transaction at the end because by default any data manipulation is rolled back and lost.

cur.commit()

Alternatively, you can set autocommit to True at the beginning to commit each new data automatically to the db.

conn.autocommit = True
Sign up to request clarification or add additional context in comments.

1 Comment

Than you can mark this as the best answer solution ;)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.