我试图复制现有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时,我看不到任何表格。有关为何可能发生这种情况的任何建议吗?
答案 0 :(得分:1)
您必须commit
最后的事务,因为默认情况下,任何数据操作都会回滚并丢失。
cur.commit()
或者,您可以在开头将autocommit
设置为True
,以便自动将每个新数据提交给数据库。
conn.autocommit = True