2012-02-07 2 views
6

나는 파이썬에서 MySQLdb 라이브러리를 사용하는 방법을 알아 내려고 노력하고있다. (나는 그들 모두를위한 초심자이다.)'insert'함수가 MySQLdb를 사용하여 행을 추가하는 이유는 무엇입니까?

내가 특별히 코드 here 다음 해요 :

cursor = conn.cursor() 
cursor.execute ("DROP TABLE IF EXISTS animal") 
cursor.execute (""" 
    CREATE TABLE animal 
    (
    name  CHAR(40), 
    category CHAR(40) 
    ) 
""") 
cursor.execute (""" 
    INSERT INTO animal (name, category) 
    VALUES 
    ('snake', 'reptile'), 
    ('frog', 'amphibian'), 
    ('tuna', 'fish'), 
    ('racoon', 'mammal') 
""") 
print "Number of rows inserted: %d" % cursor.rowcount 
cursor.close() 
conn.close() 

내가 만들거나 테이블을 드롭이 코드를 변경할 수 있지만, 나는 그것이 실제로 INSERT 커밋 얻을 수 없습니다. 예상대로 row.count 값을 반환합니다 (테이블의 값을 변경하더라도 예상 한대로 변경됩니다).

PHPMyAdmin으로 데이터베이스를 조사 할 때마다 삽입이 이루어지지 않습니다. INSERT을 데이터베이스에 커밋하는 방법은 무엇입니까? 당신은 commit 데이터 변경 사항을 잊지

답변

15

, 자동 커밋은 기본적으로 비활성화되어 있습니다 :

는 "연결 개체 (커밋) 메소드는 현재의 트랜잭션 (transaction) 미결제 변경 을 커밋 :

cursor.close() 
    conn.commit() 
    conn.close() 

Writing MySQL Scripts with Python DB-API 문서를 인용 DB-API에서 연결은 자동 커밋 모드가 비활성화되어 시작되므로 은 disconnec 전에 commit()을 호출해야합니다. 변경 또는 변경 사항이 손실 될 수 있습니다. "

+0

아우 맨. 고맙습니다. 그게 다 잊지 않을 교훈이야! 물론, 그것은 작동합니다. (그리고 나는 나의 질문에 모든 단서를 가지고있다. 한숨). –

+2

@JayGattuso, 네가 맞다. 당신의 질문에 대답이 들어있다. "하지만 INSERT를 실제로 저지를 수는 없다." – danihp

관련 문제