受け入れられた答えは正しいですが、EoghanMのコメント以上のものが必要な場合は、テーブルをCSVにコピーする際に次のように機能しました...
from sqlalchemy import sessionmaker, create_engine
eng = create_engine("postgresql://user:[email protected]:5432/db")
ses = sessionmaker(bind=engine)
dbcopy_f = open('/tmp/some_table_copy.csv','wb')
copy_sql = 'COPY some_table TO STDOUT WITH CSV HEADER'
fake_conn = eng.raw_connection()
fake_cur = fake_conn.cursor()
fake_cur.copy_expert(copy_sql, dbcopy_f)
sessionmaker
必須ではありませんが、エンジンとセッションを同時に作成してraw_connection
を使用する習慣がある場合 それらを分離する必要があります(私が知らないセッションオブジェクトを介してエンジンにアクセスする方法がない限り)。 copy_expert
に提供されるSQL文字列 それへの唯一の方法でもありません、基本的なcopy_to
があります 通常のCOPY
に貼り付けることができるパラメータのサブセットで使用できる関数 クエリする。コマンドの全体的なパフォーマンスは私には速いようで、最大20000行のテーブルをコピーします。
http://initd.org/psycopg/docs/cursor.html#cursor.copy_tohttp://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine.raw_connection