一、導出示例
/Users/nisj/PycharmProjects/BiDataProc/oldPythonBak/mysqlData2excel.py
# -*- coding=utf-8 -*-
import xlwt
import MySQLdb
import warnings
import datetime
import time
import sys
reload(sys)
sys.setdefaultencoding('utf8')
warnings.filterwarnings("ignore")
db_config = {
'host': 'MysqlHostOuterIp',
'user': 'MysqlUser',
'passwd': 'MysqlPass',
'port': 50512,
'db': 'Tv_event'
}
def getDB():
try:
conn = MySQLdb.connect(host=db_config['host'], user=db_config['user'], passwd=db_config['passwd'],
port=db_config['port'])
conn.autocommit(True)
curr = conn.cursor()
curr.execute("SET NAMES utf8");
curr.execute("USE %s" % db_config['db']);
return conn, curr
except MySQLdb.Error, e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
return None, None
conn, curr = getDB()
today = datetime.date.today()
yesterday = today - datetime.timedelta(days=1)
tomorrow = today + datetime.timedelta(days=1)
sql_text = "SELECT uid,name,phone_num,qq,area,created_time FROM match_apply where match_id = 83 order by created_time desc;"
curr.execute(sql_text)
datas = curr.fetchall()
fields = curr.description
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('tableSheet_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(datas)+1):
for col in range(0, len(fields)):
sheet.write(row, col, u'%s' % datas[row-1][col])
workbook.save(r'/Users/nisj/Desktop/mysqlDataDownload.xls')
curr.close()
conn.close()
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),"mysqlData to excel Finished!"
二、將導出函數各部分進行封裝
/Users/nisj/PycharmProjects/BiDataProc/oldPythonBak/mysqlData2excel(Encapsulation).py
# -*- coding=utf-8 -*-
import xlwt
import MySQLdb
import warnings
import datetime
import sys
reload(sys)
sys.setdefaultencoding('utf8')
warnings.filterwarnings("ignore")
mysqlDb_config = {
'host': 'MysqlHostOuterIp',
'user': 'MysqlUser',
'passwd': 'MysqlPass',
'port': 50512,
'db': 'Tv_event'
}
today = datetime.date.today()
yesterday = today - datetime.timedelta(days=1)
tomorrow = today + datetime.timedelta(days=1)
def getDB(dbConfigName):
dbConfig = eval(dbConfigName)
try:
conn = MySQLdb.connect(host=dbConfig['host'], user=dbConfig['user'], passwd=dbConfig['passwd'],
port=dbConfig['port'])
conn.autocommit(True)
curr = conn.cursor()
curr.execute("SET NAMES utf8");
curr.execute("USE %s" % dbConfig['db']);
return conn, curr
except MySQLdb.Error, e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
return None, None
def mysqlData2excel(dbConfigName, selectSql, exportPath, exportName):
# 邊框的定義
borders = xlwt.Borders()
borders.left = 1
borders.right = 1
borders.top = 1
borders.bottom = 1
borders.bottom_colour = 0x3A
# Initialize a style for frist row
style_fristRow = xlwt.XFStyle()
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
font.colour_index = 1
style_fristRow.font = font
badBG = xlwt.Pattern()
badBG.pattern = badBG.SOLID_PATTERN
badBG.pattern_fore_colour = 6
style_fristRow.pattern = badBG
style_fristRow.borders = borders
# Initialize a style for data row
style_dataRow = xlwt.XFStyle()
font = xlwt.Font()
font.name = u'隸變-簡 常規體'
font.bold = False
style_dataRow.font = font
style_dataRow.borders = borders
conn, curr = getDB(dbConfigName)
curr.execute(selectSql)
datas = curr.fetchall()
fields = curr.description
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('tableSheet_message', cell_overwrite_ok=True)
# 寫上字段信息
for field in range(0, len(fields)):
sheet.write(0, field, fields[field][0], style_fristRow)
# 獲取並寫入數據段信息
row = 1
col = 0
for row in range(1, len(datas)+1):
for col in range(0, len(fields)):
sheet.write(row, col, u'%s' % datas[row-1][col], style_dataRow)
workbook.save(r'{exportPath}/{exportName}.xls'.format(exportPath=exportPath, exportName=exportName))
curr.close()
conn.close()
# Batch Test
dbConfigName = 'mysqlDb_config'
selectSql = "SELECT uid,name,phone_num,qq,area,created_time FROM match_apply where match_id = 83 order by created_time desc;"
exportPath = '/Users/nisj/Desktop/'
exportName = 'mysqlDataDownload'
mysqlData2excel(dbConfigName, selectSql, exportPath, exportName)