sql >> Database teknologi >  >> RDS >> PostgreSQL

SQLAlchemy, Psychopg2 og Postgresql COPY

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



  1. Mysql-forespørgsel til dynamisk at konvertere rækker til kolonner

  2. Rediger materialiseret visningsforespørgsel

  3. Parametriserede forespørgsler med psycopg2 / Python DB-API og PostgreSQL

  4. MySql-fejl 150 - Fremmednøgler