2011-04-13 3 views
3

python 스크립트에서 InnonDB 엔진을 사용하여 mysql 데이터베이스에 데이터를 추가하려고 할 때 문제가 발생합니다. mysql 데이터베이스의 myisam 엔진과 잘 작동합니다. 하지만 myisam 엔진의 문제는 외래 키를 지원하지 않기 때문에 데이터베이스에 레코드를 삽입/삭제하려는 각 장소에 추가 코드를 추가해야 할 것입니다.innondb 엔진을 사용하는 mysql 데이터베이스의 python 스크립트에서 삽입 할 때의 문제

InnonDB가 파이썬 스크립트와이 문제에 대한 가능한 해결책으로 작동하지 않는 이유를 아는 사람이 있습니까 ??

+1

직면 한 문제는 무엇입니까? 오류 메시지가 있습니까? 우리에게 그걸 올리시겠습니까? – brandizzi

+0

"InnoDB가 파이썬 스크립트에서 작동하지 않는다"는 것은 무엇을 의미합니까? 내가 사용해온 모든 시간은 괜찮 았어. –

+0

@Daniel 커밋하기 전에 연결을 해제하면 비 자동 커밋 모드에서 MySQL은 업데이트를 창 밖으로 던질 것입니다. 소리가 나에게 들린다. – Johan

답변

6

InnoDB는 트랜잭션입니다. 삽입/삭제/업데이트 후에 connection.commit()을 호출해야합니다.

편집 : 자동 커밋을 사용하려면 connection.autocommit (True)를 호출 할 수 있습니다.

+0

아니요 연결 매개 변수에 따라 다릅니다. 자동 커밋하지 않도록 설정할 수 있지만 자동 커밋이 기본값입니다. – Johan

+2

위의 대답을 읽으십시오. 파이썬은 자동 커밋을 사용하지 않습니다. –

+1

+1은 자동 커밋을 사용하는 방법을 보여줍니다. – Johan

4

파이썬 DB API는 기본 구글에서 붙여

(첫 페이지, 두번째 결과)

MySQL의 :: 5.0 참조 설명서 : 13.2.8 이노 디비에 의해 자동 커밋을 비활성화 ... 기본적으로 는, MySQL은 ... 자동 커밋 각 새 연결에 대한 세션을 시작 dev.mysql.com/.../innodb-transaction-model.html

그러나

은 분명히 파이썬은 비 자동 커밋 모드에서 MySQL을 시작, 참조 :
http://www.kitebird.com/articles/pydbapi.html

을 기사에서 :

연결 개체가 커밋() 메소드에 해결되지 않은 변경을 커밋 현재 트랜잭션을 데이터베이스에서 영구적으로 유지합니다. DB-API의 경우 연결은 자동 시작 모드가 비활성화되어으로 시작되므로 연결을 끊기 전에 commit()을 호출해야 변경 사항이 손실 될 수 있습니다.

어리석은 말을 무시하고 나는 당신을 추측하여 길을 잃고 싶지 않습니다. 다음과 같은 새로운 질문을 열어보십시오.

MySQL 파이썬 DB-API에서 자동 커밋 모드를 활성화하는 방법은 무엇입니까?

행운을 비네.

+0

> MySQL 파이썬 DB-API에서 자동 커밋 모드를 활성화하는 방법은 무엇입니까? conn.autocommit (True) 여기에서 : http://stackoverflow.com/q/12059424/719812 –