приетият отговор е правилен, но ако искате повече от просто коментарът на EoghanM да продължи, следното работи за мен при КОПИРАНЕ на таблица в 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
не е необходимо, но ако имате навика да създавате двигателя и сесията едновременно, за да използвате raw_connection
ще трябва да ги отделите (освен ако няма начин за достъп до двигателя чрез обекта на сесията, който не знам). sql низът, предоставен на copy_expert
също не е единственият начин за това, има основен copy_to
функция, която можете да използвате с подмножество от параметри, които бихте могли да поставите в нормален COPY
ЗА запитване. Цялостното изпълнение на командата ми изглежда бързо, като копирам таблица от ~20000 реда.
http://initd.org/psycopg/docs/cursor.html#cursor.copy_tohttp://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.Engine.raw_connection