최근 Python을 사용하여 CSV를 읽고 쓰고 데이터베이스를 저장하는 과정에서 발생한 다양한 문제를 요약해 보겠습니다.
추천 관련 mysql 비디오 튜토리얼: "mysql 튜토리얼"
코드:
reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'world' user = 'root' password = '123456' con = MySQLdb.connect(host=host,charset="utf8",port=port,db=db,user=user,passwd=password) try: df = pd.read_sql(sql=r'select * from city', con=con) df.to_sql('test',con=con,flavor='mysql') except Exception as e: print(e.message)
아무 일도 일어나지 않으면 인쇄됩니다. 말하기: 데이터베이스 버전 MySQL은 지원되지 않습니다.
Stackoverflow에서 답을 찾았습니다. 'mysql' 버전은 pandas 버전 0.19에서 더 이상 사용되지 않습니다.
다른 방법을 시도해 보겠습니다.
reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'world' user = 'root' password = '123456' engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_sql(sql=r'select * from city', con=engine) df.to_sql('test',con=engine,if_exists='append',index=False) except Exception as e: print(e.message)
실행 후 ok, DataFrame의 인덱스를 컬럼으로 저장할지 여부를 나타내는 index 매개 변수를 저장하면 일반적으로 필요하지 않으므로 값이 False로 할당됩니다. 문제가 해결되었지만 여전히 작은 문제가 있습니다.
중국어(내 창)가 포함된 csv 파일이 있다고 가정합니다.이름 연령 클래스
Xiao Ming 15, 1학년
Xiao Zhang 18, 3학년
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv') print(df) df.to_sql('test', con=engine, if_exists='append', index=False) except Exception as e: print(e.message)
df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv',encoding='gbk')
정보를 정상적으로 인쇄할 수 있지만 오류가 다시 보고됩니다.
UnicodeEncodeError: 'latin-1' 코덱은 0-1 위치의 문자를 인코딩할 수 없습니다: 서수가 범위(256)에 속하지 않습니다
아직 인코딩 문제입니다. 저장 시 인코딩을 지정하지 않았기 때문입니다. 데이터베이스에 넣습니다. 이 문제를 해결하려고 할 때 나도 속았습니다. 인터넷에 있는 모든 것이 가능합니다. 프로세스에 대해서는 이야기하지 않고 코드를 살펴보겠습니다.
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
해결됨
관련 기사:
Pandas for Python 데이터에 대한 실제 IP 요청에 대한 자세한 설명 분석Python의 pandas 라이브러리를 통한 cdn 로그 분석에 대한 자세한 설명Python의 pandas 프레임워크를 사용하여 Excel 파일의 데이터를 조작하는 방법에 대한 튜토리얼위 내용은 Python은 Pandas를 사용하여 CSV 파일을 읽고 MySQL에 씁니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!