방금 Python 용 MySQLDb 패키지를 사용하여 배웠고 select 문에서 행을 가져 오는 것에 익숙합니다.실행 (sql) 후 fetchall()을 호출하면 데이터가 다시 읽습니까?
cursor.execute("SELECT movie_list_....")
result = cursor.fetchall()
첫 번째 명령을 실행할 때 영향을받는 행 수인 123L이 표시됩니다. 두 번째 명령을 실행하면 데이터가 실제로 반입됩니다.
내가 fetchall()을 수행하면이 존재하는 상태에서 이 DB를 다시 읽습니까?
나는 약에 대해 귀찮게 생각합니다. 나는 30 행에 영향을 미치는 select 연산을 실행했습니다. cursor.fetchmany (10)를 사용하여 한 번에 10 개씩 처리합니다. 그런 다음 10 개의 숫자를 더합니다 (예를 들어!). 첫 번째 두 번의 반복이 성공적으로 진행되었지만 세 번째 반복 전에에 영향을주는 테이블에서 업데이트가 실행되었습니다. 그런 다음 세 번째 반복이 발생합니다.
그래서 내 선택에을 선택했을 때 데이터베이스 이 반영됩니까? 아니면 오래된 가치와 새로운 가치가 혼합 된 것입니까?
나는 대학에서 "더러운 읽기 문제"라는 것을 기억합니다. 그러나 행을 모두 한 번에 읽는 맥락에서 은 fetchmany()와 같이 배치가이 아닙니다.
이 문제를 해결하는 데이터베이스 이론의 차이점을 알려주십시오.
"데이터 조각을 조각으로 가져 오는 경우 서버가 인식하지 못합니다"설명하십시오. Didnt get all at – aitchnyu
글쎄,이 경우 쿼리를 보내는 것은 내부적으로 mysql_store_result()를 호출하는 것을 의미한다. 이렇게하면 서버가 전체 결과 세트를 클라이언트에 보내어 처리 될 때까지 내부 결과를 유지합니다. (이 모든 일은 파이썬 밑의 C 레이어에서 발생합니다.) 따라서 서버를 방해하지 않고 오래되고 새로운 데이터를 혼합하지 않고 원하는만큼 데이터를 가져올 수 있습니다. – glglgl