2017-01-11 6 views
0

私は既存のPostgreSQLデータベースのテーブル構造を複製しようとしています。私は現在、AとBの2つのデータベースを持っています。 "pg_dump -s"コマンドを使用して、Aのテーブルを作成するSQLクエリを生成しました。私のpythonスクリプトでは、データベースBに同じ構造を作成するために、pg_dumpを使ったPython PostgreSQLのテーブル作成

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") 

コードは正常に動作しているようですが、データベースBIをチェックするとテーブルが表示されません。これがなぜ起こっているのかについての示唆はありますか?

答えて

1

デフォルトでは、すべてのデータ操作がロールバックされて失われるため、commitトランザクションが最後に必要です。

cur.commit() 

代わりに、DBへ自動的にそれぞれの新しいデータをコミットするために先頭にTrueからautocommitを設定することができます。

conn.autocommit = True 
+0

ありがとうございました! –

+0

これは最高の回答解決策としてマークすることができます。 –

関連する問題