sql >> Databáze >  >> RDS >> PostgreSQL

SQLAlchemy, Psycopg2 a Postgresql COPY

přijatá odpověď je správná, ale pokud chcete víc než jen komentář od EoghanM, následující postup mi fungoval při KOPÍROVÁNÍ tabulky do 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 není nutné, ale pokud máte ve zvyku vytvářet engine a relaci současně, použijte raw_connection budete je muset oddělit (pokud neexistuje nějaký způsob, jak získat přístup k enginu přes objekt relace, který neznám). Řetězec sql poskytnutý copy_expert není také jediná cesta k němu, existuje základní copy_to funkce, kterou můžete použít s podmnožinou parametrů, které byste mohli vložit do normálního COPY TO dotaz. Celkový výkon příkazu se mi zdá rychlý, protože zkopíruje tabulku ~20 000 řádků.

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



  1. Únikový řetězec Python pro MySQL

  2. Jak spojit tři stoly podle laravelova výmluvného modelu

  3. Proč nám Oracle SQL neumožňuje používat aliasy sloupců v klauzulích GROUP BY?

  4. Jaký je rozdíl mezi Views a Materialized Views v Oracle?