> 데이터 베이스 > MySQL 튜토리얼 > Python을 사용한 MySQL 데이터베이스 업데이트가 데이터베이스에 반영되지 않는 이유는 무엇입니까?

Python을 사용한 MySQL 데이터베이스 업데이트가 데이터베이스에 반영되지 않는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-06 19:38:14
원래의
570명이 탐색했습니다.

Why Aren't My MySQL Database Updates with Python Reflecting in the Database?

MySQL 및 Python으로 데이터베이스 업데이트 문제 해결

Python의 MySQLdb 라이브러리를 사용하여 MySQL 데이터베이스를 업데이트할 때 문제가 발생합니다. 다음 코드가 실행 중입니다.

import MySQLdb

conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname")
cursor=conn.cursor()

cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100")
cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100")
results = cursor.fetchall()

for row in results:
    print row[0]

print "Number of rows updated: %d" % cursor.rowcount

cursor.close()
conn.close()
로그인 후 복사

이 코드를 실행하면 성공한 것으로 나타나 데이터베이스가 업데이트되었음을 ​​나타냅니다. 그러나 이후 MySQL 명령줄 인터페이스에서 쿼리하면 업데이트가 적용되지 않은 것으로 나타납니다.

원인

문제는 커밋 작업이 부족하기 때문입니다. MySQLdb는 기본적으로 트랜잭션을 활성화하며 업데이트를 영구적으로 수행하려면 명시적인 커밋이 필요합니다. 커밋하지 않으면 변경 사항이 데이터베이스에 저장되지 않습니다.

해결책

이 문제를 해결하려면 아래와 같이 연결을 닫기 전에 conn.commit()를 포함하십시오.

import MySQLdb

conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname")
cursor=conn.cursor()

cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100")
cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100")
results = cursor.fetchall()

for row in results:
    print row[0]

print "Number of rows updated: %d" % cursor.rowcount

**conn.commit()**  # Commit changes to database

cursor.close()
conn.close()
로그인 후 복사

conn.commit()을 통합하면 데이터베이스에 대한 변경 사항이 성공적으로 적용됩니다. 지속되었습니다.

위 내용은 Python을 사용한 MySQL 데이터베이스 업데이트가 데이터베이스에 반영되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿