2013-09-27 2 views
0

누구든지이 문제가 있었는지 보지 않았지만 보이지 않습니다! 기본적으로 내 문제는 다음과 같다 :Python을 통해 MySQL에로드 된 데이터가 사라집니다.

  • 나는 내가 같은 파이썬 인스턴스 내에서로드 된 항목을 검색 할 수 있어요 때문에 내가 성공하는 것 파이썬
  • 에 대한 MySQLdb 라이브러리를 사용하여 DB를 MYSQL로 데이터를로드 시도 파이썬 코드를 실행하고 나도 MySQL의 워크 벤치에서 쿼리를 실행하거나 명령 프롬프트에서 파이썬 코드를 실행하여 데이터를 검색 할 때, 폐쇄되면, 내가 데이터를 검색 할 수 없습니다
  • ..

요약하면, 데이터를로드합니다. 그러나 파이썬 함수를 닫으면 문제가 발생하면 데이터가 사라지는 것 같습니다.

나중에 문제를 분리하기 위해 파이썬 코드가 데이터를로드 할 수 있도록 time.sleep (60) 줄을 코드에 삽입했습니다. 쿼리를 사용하여 MYSQL workbench에서 데이터를 검색하지만 여전히 캔트는 없습니다.

데이터가 다른 인스턴스에 저장되어 있다고 생각했지만 "포트"와 같은 항목을 선택했는데 동일합니다 ...

나는 4-5 시간을 알아 내려고했지만, 희망을 잃기 시작했다. 많은 도움을 요청했다. 내 코드를 아래에서 찾으십시오.

db = MySQLdb.connect("localhost","root","password","mydb") 
cursor = db.cursor() 
cursor.execute("SELECT VERSION()") 
data = cursor.fetchone() 
print data 

cursor.execute("LOAD DATA LOCAL INFILE "+ "filepath/file.txt" +" INTO TABLE addata FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n'") 
data = cursor.fetchall() 
print data ###At this point data displays warnings etc 
cursor.execute("select * from addata") 
data = cursor.fetchmany(10) 
print data ###Here I can see that the data is loaded 

time.sleep(60) ##Here while the code is sleeping I go to mysql workbench and try the query "select * from addata".. It returns nothing:(
+0

변경 사항을 적용 하시겠습니까? – Hyperboreus

+0

MySQLWorkbench 나 mysql에서 직접'LOAD DATA ... '문장을 실행하려고 시도 했습니까? 또한 파일에서 몇 줄을 보여주십시오. – peterm

+0

감사합니다! 문제는 정말로 내가 나의 변화를 저지르지 않았다라는 것이었다 –

답변

4

데이터를로드 한 후 거의 확실하게 커밋해야합니다.

프로그램이 데이터를 커밋하지 않고 종료하면 DB는 무언가 잘못되었다는 가정하에 트랜잭션을 롤백합니다.

연결 요청의 일부로 자동 연결을 설정할 수 있습니다. 그렇지 않으면 커서 개체를 통해 'commit()'을 호출해야합니다.

+0

Aaahh는 당신에게 매우 감사한다! 이게 그랬어 ... –

관련 문제