은 내가 데이터를 당겨, 대형 테이블을 통해 반복하는 동안 나는 매우 큰 테이블을포스트 그레스 & psycopg 서버 쪽 커서 : 데이터가 잠겨 있습니까?
cursor = conn.cursor('name_of_the_new_server_side_cursor')
cursor.execute(""" SELECT * FROM table LIMIT 10000000 """)
while True:
rows = cursor.fetchmany(5000)
if not rows:
break
for row in rows:
# do something with row
pass
을 읽을 수 있도록 내 포스트 그레스에 DB를 서버 쪽 커서를 만들 psycopg을 사용하려면, 행이 될 수 있습니다 내 쿼리가 실행되는 동안 다른 프로세스/쿼리에 의해 업데이트되거나 추가 되었습니까? 그렇다면 내 커서가 테이블을 반복하면서 쿼리가 처음 실행될 때와 같이 업데이트/새 데이터 또는 데이터가 표시됩니까? 예를 들어, 처음 50K 행의 데이터를 가져 오면 행 51201로 업데이트됩니다. 내 커서가 50,000에서 55,000 행의 데이터를 가져 오도록 내 쿼리에서 업데이트 된 폼 또는 원래 폼으로 행을 반환합니다. ? 새로운 행이 다른 프로세스에 의해 추가되면, 내 쿼리는 새로운 행을 반환하거나 cursor.execute 문을 처음 실행했을 때의 상태로 테이블을 반환합니까?