python 은 엑셀 을 읽 고 my sql 에 기록 하 는 작은 도 구 를 상세 하 게 설명 합 니 다.

Python 은 데이터 분석의 강력 한 이기 이다.
Python 을 이용 하여 데이터 분석 을 하 는데 첫 번 째 단 계 는 일상 업무 에서 각종 엑셀 보고 서 를 읽 고 데이터 에 저장 하 는 방법 을 배 워 서 후속 데이터 처 리 를 편리 하 게 하 는 것 입 니 다.
python 이 excel 을 어떻게 읽 는 지 공유 하고 Python 을 사용 하여 Mysql 에 데 이 터 를 저장 합 니 다.필요 한 친구 들 이 함께 보 세 요.
배경
전국 대학 명 록 을 데이터 베이스 로 가 져 와 야 합 니 다.교육위원회 사이트 에서 최신 데이터 로 내 려 왔 습 니 다.엑셀 형식 입 니 다.도 구 를 만들어 가 져 와 야 합 니 다.python 을 사용 해 보고 싶 습 니 다.말 하면 하 겠 습 니 다.
창고.
  • xlrd:excel 읽 기와 쓰기 라 이브 러 리
  • pymysql:mysql 데이터베이스 구동 라 이브 러 리,순수 python 제조
  • re:정규 표현 식 라 이브 러 리,핵심 라 이브 러 리
  • 앞의 두 개 는 pip 로 쉽게 설 치 를 마 쳤 습 니 다.저 는 mac pro 에서 진행 되 었 습 니 다.과정 이 순 조 롭 습 니 다.예전 에 mac 에 my sqlclient 를 설치 하지 못 해서 python 사용 을 포기 한 적 이 있 습 니 다.그러나 저 는 Liux 에 my sqlclient 를 설치 하 는 데 문제 가 없 었 습 니 다.
    소스 코드
    아주 간단 한 작은 각본 으로 기념 으로 남 겨 두다.주의해 야 할 점 은 데이터베이스 연결 필드 문자열 에 문자 인 코딩 을 설정 해 야 합 니 다.그렇지 않 으 면 기본적으로 lanti-1 입 니 다.기록 하 는 중 오류 가 발생 할 수 있 습 니 다.
    
    import xlrd
    import pymysql
    import re
    
    conn = pymysql.connect(host='database connect address', port=1234, user='root',
          passwd='****', db='database name', charset='utf8mb4')
    p = re.compile(r'\s')
    data = xlrd.open_workbook('./W020170616379651135432.xls')
    table = data.sheets()[0]
    t = table.col_values(1)
    nrows = table.nrows
    for i in range(nrows):
     r1 = table.row_values(i)
     if len(r1[2]) == 10:
      cur = conn.cursor()
      cur.execute('insert into `university` (`id`, `name`, `ministry`, `city`, `level`, `memo`) \
         values (%s, %s, %s, %s, %s, %s)',
         (r1[2], p.sub('', r1[1]), p.sub('', r1[3]), p.sub('', r1[4]), r1[5], r1[6]))
      conn.commit()
      cur.close()
    
    conn.close()
    심득
    클래스 C 의 언어 에 익숙해 져 서 python 에 익숙 하지 않 습 니 다.두 가지 스타일 의 프로 그래 밍 언어 를 동시에 익히 려 면 너무 고 통 스 럽 습 니 다.python 프로 그래 밍 효율 이 정말 좋 습 니 다.이것 은 제 가 처음으로 python 으로 실 용적 인 애플 릿 을 쓴 것 입 니 다.테이프 테스트 까지 모두 한 시간 이 걸 렸 습 니 다.python 라 이브 러 리 와 자료 가 풍부 하여 적당 한 것 을 찾 지 못 할 까 봐 걱정 하지 않 습 니 다^ ^
    데이터베이스 기록 최적화
    아침 에 한가 해서 대량 기록 으로 최 적 화 했 습 니 다.작업 초 완성 은 한 줄 한 줄 기록 하 는 것 보다 훨씬 빠 르 고 제 가 예상 한 것 보다 차이 가 큽 니 다.보아하니,나 쁜 공 구 는 없 는 것 같다.다만 우 리 는 좋 은 공 구 를 사용 하지 않 았 을 뿐이다!
    
    import xlrd
    import pymysql
    import re
    
    conn = pymysql.connect(host='database connect address', port=1234, user='root',
          passwd='****', db='database name', charset='utf8mb4')
    p = re.compile(r'\s')
    data = xlrd.open_workbook('./W020170616379651135432.xls')
    table = data.sheets()[0]
    t = table.col_values(1)
    nrows = table.nrows
    ops = []
    for i in range(nrows):
     r1 = table.row_values(i)
     if len(r1[2]) == 10:
      ops.append((r1[2], p.sub('', r1[1]), p.sub('', r1[3]), p.sub('', r1[4]), r1[5], r1[6]))
    
    cur = conn.cursor()
    cur.executemany('insert into `university_copy` (`id`, `name`, `ministry`, `city`, `level`, `memo`) \
         values (%s, %s, %s, %s, %s, %s)', ops)
    conn.commit()
    cur.close()
    
    conn.close()
    질문
    1.mac 에 xlrd 모듈 을 설치 합 니 다.cmd 에서 pip install xlrd 를 실행 하지 못 하면 홈 페이지 에 직접 다운로드 할 수 있 습 니 다.이름 이 이와 같은 파일 xlrd-1.0.0-py3-none-any.whl 입 니 다.다운로드 한 파일 경로 로 전환 하여 cmd 에서 pip 3 install xlrd-1.0.0-py3-none-any.whl 을 실행 하면 됩 니 다.
    http://pypi.python.org/pypi/xlrd
    2.python 엑셀 신문 열기xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b'username'열 려 있 는 엑셀 저장 시 호환성 등 형식 알림 이 있 는 지 확인 할 수 있 습 니 다.있 으 면 형식 문제 가 없 는 파일 을 다시 만들어 야 합 니 다.
    
    import xlrd
    from os.path import join,abspath,dirname
    
    fname = join(dirname(dirname(abspath(__file__))),'test1.xls')
    bk = xlrd.open_workbook(fname, encoding_override="utf-8")
    shxrange = range(bk.nsheets)
    try:
    sh = bk.sheet_by_name("   1")
    #     
    nrows = sh.nrows
    #     
    ncols = sh.ncols
    print("nrows %d, ncols %d" % (nrows, ncols))
    #           
    cell_value = sh.cell_value(1, 1)
    # print cell_value
    
    row_list = []
    #       
    for i in range(0, nrows):
    row_data = sh.row_values(i)
    row_list.append(row_data)
    except:
    print("no sheet in %s named Sheet1" % fname)
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기