Python을 사용하여 한 번의 클릭으로 데이터베이스를 Excel 테이블로 내보내는 방법에 대한 자세한 설명

高洛峰
풀어 주다: 2017-03-24 17:15:12
원래의
2589명이 탐색했습니다.

데이터베이스 데이터를 엑셀 테이블로 내보내는 것도 매우 흔히 사용되는 기능이라고 할 수 있습니다. 결국 모든 사람이 데이터베이스 작업 명령문을 이해하는 것은 아닙니다.
먼저 완성된 효과를 살펴보겠습니다.
데이터 소스
Python을 사용하여 한 번의 클릭으로 데이터베이스를 Excel 테이블로 내보내는 방법에 대한 자세한 설명
결과 내보내기
Python을 사용하여 한 번의 클릭으로 데이터베이스를 Excel 테이블로 내보내는 방법에 대한 자세한 설명
종속성
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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