jawaban yang diterima benar tetapi jika Anda ingin lebih dari sekadar komentar EoghanM, berikut ini berhasil bagi saya dalam MENYALIN tabel ke 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
tidak perlu tetapi jika Anda terbiasa membuat mesin dan sesi secara bersamaan untuk menggunakan raw_connection
Anda harus memisahkannya (kecuali ada cara untuk mengakses mesin melalui objek sesi yang saya tidak tahu). String sql disediakan untuk copy_expert
juga bukan satu-satunya cara untuk itu, ada copy_to
dasar fungsi yang dapat Anda gunakan dengan subset dari parameter yang dapat Anda lewati ke COPY
normal UNTUK bertanya. Kinerja keseluruhan dari perintah tampak cepat bagi saya, menyalin tabel ~20.000 baris.
http://initd.org/psycopg/docs/cursor.html#cursor.copy_tohttp://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine.raw_connection