Det accepterede svar er korrekt, men hvis du vil have mere end blot EoghanM's kommentar til at gå på, virkede følgende for mig ved at KOPIERE en tabel ud til 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
er ikke nødvendigt, men hvis du har for vane at oprette motoren og sessionen på samme tid, skal du bruge raw_connection
du skal adskille dem (medmindre der er en måde at få adgang til motoren gennem sessionsobjektet, som jeg ikke kender). SQL-strengen leveret til copy_expert
er heller ikke den eneste vej til det, der er en grundlæggende copy_to
funktion, som du kan bruge med undersæt af parametrene, som du kunne overføre til en normal COPY
TIL forespørgsel. Den overordnede ydelse af kommandoen virker hurtig for mig, idet jeg kopierer en tabel med ~20.000 rækker ud.
http://initd.org/psycopg/docs/cursor.html#cursor.copy_tohttp://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine.raw_connection