>데이터 베이스 >MySQL 튜토리얼 >내 Python 코드가 내 MySQL 데이터베이스에 CSV 데이터를 삽입하지 않는 이유는 무엇입니까?

내 Python 코드가 내 MySQL 데이터베이스에 CSV 데이터를 삽입하지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-29 05:27:12820검색

Why Isn't My Python Code Inserting CSV Data into My MySQL Database?

Python에서 MySQL에 CSV 데이터 로드

이 코드 조각은 CSV 데이터를 MySQL 데이터베이스 테이블에 로드하려고 시도합니다. 그러나 사용자는 테이블에 아무것도 삽입되지 않는 문제에 직면하고 있습니다.

코드는 csv 및 MySQLdb 모듈을 사용하여 CSV 파일을 읽고 해당 데이터를 testcsv라는 MySQL 테이블에 삽입합니다. CSV 파일에는 이름, 클래스, 마크라는 세 개의 열이 있어야 합니다.

코드를 실행하면 사용자는 오류 메시지를 보고하지 않지만 테이블은 비어 있습니다. 이 문제를 해결하기 위해 코드에는 변경 사항을 데이터베이스에 커밋하는 중요한 단계가 누락되어 있습니다.

MySQL에서 새 레코드 삽입과 같은 데이터베이스 변경 사항은 커밋될 때까지 영구적이지 않습니다. 기본적으로 MySQL은 자동 커밋 모드로 작동합니다. 즉, 각 문이 자동으로 커밋됩니다. 그러나 트랜잭션을 처리할 때와 같은 특정 상황에서는 변경 사항을 명시적으로 커밋해야 합니다.

제공된 코드에서 각 데이터 행을 삽입한 후 다음 줄이 누락되었습니다.

mydb.commit()

이 줄을 추가하면 각 INSERT 문으로 변경된 내용이 데이터베이스에 커밋됩니다. 결과적으로 데이터가 testcsv 테이블에 성공적으로 삽입됩니다. 업데이트된 코드는 다음과 같습니다.

import csv
import MySQLdb

mydb = MySQLdb.connect(host='localhost',
    user='root',
    passwd='',
    db='mydb')
cursor = mydb.cursor()

csv_data = csv.reader(file('students.csv'))
for row in csv_data:

    cursor.execute('INSERT INTO testcsv(names, \
          classes, mark )' \
          'VALUES("%s", "%s", "%s")', 
          row)
    mydb.commit()
#close the connection to the database.
cursor.close()
print "Done"

각 삽입 작업 후에 변경 사항을 커밋하면 사용자는 데이터가 MySQL 테이블에 영구적으로 저장되도록 할 수 있습니다.

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.