모든 데이터를 메모리에로드하는 것이 옵션이 아닌 MySQL 데이터베이스에서 많은 데이터를 가져 오는 쿼리가 있습니다. 다행히 SQLAlchemy를 사용하면 MySQL의 SSCursor를 사용하여 엔진을 만들 수 있으므로 데이터가 스트리밍되고 메모리에 완전히로드되지 않습니다. 위대한일부 쿼리에 대해서만 SQLAlchemy에서 MySQL의 SSCursor를 사용할 수 있습니까?
create_engine(connect_str, connect_args={'cursorclass': MySQLdb.cursors.SSCursor})
을,하지만 난 아주 작은 사람을 포함한 모든 내 쿼리 SSCursor을 사용하지 않습니다 그래서 같이이 작업을 수행 할 수 있습니다. 차라리 정말로 필요한 곳에서만 사용하고 싶습니다. 내가 이렇게 같은 stream_results
설정이 작업을 수행 할 수있을 거라고 생각 : 그 사용시 메모리 사용량을 모니터링 할 때 불행하게도
conn.execution_options(stream_results=True).execute(MyTable.__table__.select())
,, 내가하지 않는 것처럼 메모리의 동일한 금액을 사용하는 것 그, SSCursor
사용하는 동안 내 메모리 사용량이 예상대로 nil로 이동합니다. 내가 뭘 놓치고 있니? 이것을 이루기위한 다른 방법이 있습니까? docs에서
이 내가 질문을하기 전에 함께가는 상처 무슨 본질적이다. 단지 여분의 연결을 열어 과도하게 관리해야한다는 것을 의미합니다. 누군가가 더 좋은 방법을 가지고 있는지보기 위해 좀 더 오래 기다릴 것이고 그렇지 않다면 이것을 옳은 것으로 표시 할 것입니다. – Eli