使用pg_dump创建Python PostgreSQL表

时间:2017-01-11 22:54:29

标签: python sql postgresql

我试图复制现有PostgreSQL数据库的表结构。我目前有2个数据库,A和B.我使用" pg_dump -s"命令并生成sql查询以创建A的表。在我的python脚本中,我有以下代码在数据库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")

代码似乎运行良好,但是当我检查数据库B时,我看不到任何表格。有关为何可能发生这种情况的任何建议吗?

1 个答案:

答案 0 :(得分:1)

您必须commit最后的事务,因为默认情况下,任何数据操作都会回滚并丢失。

cur.commit()

或者,您可以在开头将autocommit设置为True,以便自动将每个新数据提交给数据库。

conn.autocommit = True