데이터베이스 데이터를 엑셀 테이블로 내보내는 것도 매우 흔히 사용되는 기능이라고 할 수 있습니다. 결국 모든 사람이 데이터베이스 작업 명령문을 이해하는 것은 아닙니다.
먼저 완성된 효과를 살펴보겠습니다.
데이터 소스
결과 내보내기
종속성
Python으로 구현되므로 다음이 필요합니다. Python 환경 지원
Python2.7.11
제 Python 환경은 2.7.11입니다. 버전 3.5를 사용하더라도 개념은 동일합니다.
xlwtpip install xlwt
MySQLdbpip install MySQLdb
위 방법이 실패할 경우, sourceforge 공식 웹사이트로 이동하여 Windows에서 msi 버전을 다운로드할 수 있습니다. 또는 소스 코드를 사용하여 직접 컴파일하십시오.
데이터베이스 관련
이번 실험에서 데이터베이스에 관련된 것은 실제로 Python을 사용하여 데이터베이스를 어떻게 운영하는가 하는 것인데, 지식 포인트는 거의 없습니다. 시간 .
연결
conn = MySQLdb.connect(host='localhost',user='root',passwd='mysql',db='test',charset='utf8')
여기서 언급할 가치가 있는 것은 마지막 매개변수의 사용입니다. 그렇지 않으면 데이터베이스에서 가져온 데이터가 왜곡됩니다. 왜곡된 코드 문제에 대해 여전히 이해가 되지 않는다면 이 기사를 읽어 보는 것이 좋습니다인코딩, 디코딩 및 왜곡된 코드에 대한 간략한 토론
현장 정보 얻기
fields = cursor.description
Cursor는 데이터베이스 운영의 핵심입니다. 커서의 특징은 데이터 조각이 탐색되면 반환될 수 없다는 것입니다. 하지만 수동으로 위치를 변경할 수도 있습니다.
cursor.scroll(0,mode='absolute') 커서 위치를 재설정
데이터 가져오기
데이터를 가져오는 것이 훨씬 쉽지만, 데이터 항목이 다음과 유사한 존재라는 것을 마음속으로 이해해야 합니다. 차원 배열. 각 셀 항목을 가져올 때 주의를 기울여야 합니다.
results = cursor.fetchall()
Excel 기초
마찬가지로 Python을 사용하여 Excel 데이터를 조작하는 방법도 설명합니다.
워크북
우리 업무의 기본이 되는 워크북의 개념을 분명히 해야 합니다. 아래 시트에 해당하는 통합 문서는 시트가 의존하는 캐리어입니다.
workbook = xlwt.Workbook()
sheet
우리의 모든 작업은 시트에서 수행됩니다.
sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True)
워크북과 시트의 경우 이것이 다소 모호하다면. 이것을 가정해 봅시다.
일상에서 회계를 하다 보면 우리 모두는 학습서인 가계부를 갖게 됩니다. 우리의 회계는 차례로 표에 기록되며, 이 표는 우리가 보는 시트입니다. 원장에는 여러 개의 테이블이 있을 수도 있고 단 하나의 테이블만 있을 수도 있습니다. 이것은 이해하기 쉬울 것입니다. :-)
케이스
작은 케이스를 살펴보겠습니다.
# coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/20' # __Desc__ = 从数据库中导出数据到excel数据表中 import xlwt import MySQLdb conn = MySQLdb.connect('localhost','root','mysql','test',charset='utf8') cursor = conn.cursor() count = cursor.execute('select * from message') print count # 重置游标的位置 cursor.scroll(0,mode='absolute') # 搜取所有结果results = cursor.fetchall()# 获取MYSQL里面的数据字段名称fields = cursor.description workbook = xlwt.Workbook() sheet = workbook.add_sheet('table_message',cell_overwrite_ok=True) # 写上字段信息 for field in range(0,len(fields)): sheet.write(0,field,fields[field][0]) # 获取并写入数据段信息 row = 1 col = 0 for row in range(1,len(results)+1): for col in range(0,len(fields)): sheet.write(row,col,u'%s'%results[row-1][col]) workbook.save(r'./readout.xlsx')
Encapsulation
사용 편의성을 위해 이제 호출하기 쉬운 함수로 캡슐화했습니다.
캡슐화 후
# coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') # __author__ = '郭 璞' # __date__ = '2016/8/20' # __Desc__ = 从数据库中导出数据到excel数据表中 import xlwt import MySQLdb def export(host,user,password,dbname,table_name,outputpath): conn = MySQLdb.connect(host,user,password,dbname,charset='utf8') cursor = conn.cursor() count = cursor.execute('select * from '+table_name) print count # 重置游标的位置 cursor.scroll(0,mode='absolute') # 搜取所有结果 results = cursor.fetchall() # 获取MYSQL里面的数据字段名称 fields = cursor.description workbook = xlwt.Workbook() sheet = workbook.add_sheet('table_'+table_name,cell_overwrite_ok=True) # 写上字段信息 for field in range(0,len(fields)): sheet.write(0,field,fields[field][0]) # 获取并写入数据段信息 row = 1 col = 0 for row in range(1,len(results)+1): for col in range(0,len(fields)): sheet.write(row,col,u'%s'%results[row-1][col]) workbook.save(outputpath) # 结果测试 if __name__ == "__main__": export('localhost','root','mysql','test','datetest',r'datetest.xlsx')
테스트 결과
id name date 1 dlut 2016-07-06 2 清华大学 2016-07-03 3 北京大学 2016-07-28 4 Mark 2016-08-20 5 Tom 2016-08-19 6 Jane 2016-08-21
위 내용은 Python을 사용하여 한 번의 클릭으로 데이터베이스를 Excel 테이블로 내보내는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!