SqlAlchemy의 yield퍼의 행동

1823 단어 sqlalchemyPython

SqlAlchemy의 yield퍼라는 방법.


Rails로 말하면findin_바치스야?select에서 대량의 데이터를 처리할 때 결과를 모두 메모리에 저장하지 않고 순서대로 처리하는 가장 좋은 방법이다.
나는 limit과offset을 잘 처리할 수 있는 방법이 틀림없다고 생각한다. 그런 것이 아니라 select의 결과를 흐르는 것으로 처리하는 방법이다.
SQL 로그를 보고 나 말고도 SQL이 나오지 않아 고민하는 사람이 있을 거라고 생각해서 적어놨어요.
만일을 대비하여 필기를 사용하다
yield_per.sample.py
sess = Session(engine)
for obj in sess.query(Customer).filter_by(ownd_uid = n).yield_per(10):
   hogehoge(obj)
이렇게 쓰면 Filter의 조건에서 대량의 기록을 선택하더라도 하나하나 select로 처리하기 때문에 select의 결과는 모두 메모리에 넣지 않고 순서대로 처리한다.
대박이다.

어이구?N 루트로 연결하시겠습니까?


MySQL에서 show processlist퍼로 호출된 연결은 각각 연결이 붙어 있는 것 같습니다.그러고 보니?

가장 처음에 945초가 걸렸던 것은 가장 높은 순환이었고, 결과는connect였다.타임아웃으로 다 못 자르나...(부러질 것 같다.)
이러한 대량의 데이터를 사용하지 않으면 보이지 않기 때문에 오류가 발생하면 사용 방법에 대해 계속 기록할 것입니다.

결과: 연결 오류가 발생하지 않았습니다.


1~2시간 정도 걸리지만 문제 없이 끝났다.
설마 오랫동안 연결을 유지하면 Show processislist에 대해 조회하지 않겠어?!
MySQL 쪽에서 어떻게 처리하는지 꼭 알아봐주세요, 행동!

좋은 웹페이지 즐겨찾기