sql >> Database >  >> RDS >> PostgreSQL

SQLAlchemy, Psycopg2 en Postgresql KOPIE

het geaccepteerde antwoord is correct, maar als je meer wilt dan alleen de opmerking van de EoghanM, werkte het volgende voor mij bij het kopiëren van een tabel naar 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)

De sessionmaker is niet nodig, maar als je de gewoonte hebt om de engine en de sessie tegelijkertijd te maken, gebruik dan raw_connection je moet ze scheiden (tenzij er een manier is om toegang te krijgen tot de engine via het sessie-object dat ik niet ken). De sql-tekenreeks die is verstrekt aan copy_expert is ook niet de enige manier om er te komen, er is een basis copy_to functie die u kunt gebruiken met een subset van de parameters die u zou kunnen doorgeven aan een normale COPY NAAR opvragen. De algehele prestaties van de opdracht lijken me snel, door een tabel van ~20000 rijen te kopiëren.

http://initd.org/psycopg/docs/cursor.html#cursor.copy_tohttp://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine.raw_connection



  1. Hoe maak ik een opgeslagen procedure die optioneel in kolommen zal zoeken?

  2. Postgresql intarray-fout:undefined symbool:pfree

  3. Een primaire sleutel voor automatische verhoging definiëren in SQL Server

  4. Hoe te selecteren uit MySQL waar Tabelnaam Variabel is