如何使⽤python将MySQL中的查询结果导出为Excel----xlwt的使⽤
如何在MySQL中执⾏的⼀条查询语句结果导出为Excel?
⼀、可选⽅法
1、使⽤sql yog等远程登录,执⾏查询语句并导出结果集为Excel
  适⽤于较简单的查询结果集的导出
  如果需要多个SQL语句的查询结果合并起来导出为⼀个Excel则操作起来会⽐较繁琐。
2、使⽤python连接MySQL执⾏SQL语句并导出为Excel
  操作简单,且可以在脚本中设置好Excel的输出格式。
⼆、如何使⽤python将查询结果导出为Excel?
1、python连接MySQL进⾏查询
  若想要使⽤python连接MySQL,我们必须⾸先确保python中有[pymysql]这⼀个模块。(该测试环境为python3)。
  1.1  pymysql的安装
    打开cmd,使⽤pip命令进⾏安装。
# pip install pymysql
  1.2 python连接MySQL并执⾏SQL获取结果集
    以下是python连接数据库并获取结果集的最简单的使⽤⽅法,⽬的是让⼤家可以对最基础的实现函数有个简单的了解。
    代码的⼤致流程是,使⽤指定账号连接数据库,开启⼀个游标,执⾏SQL,获取结果集,关闭游标,关联数据库连接。代码如下:
import pymysql  #导⼊模块
con = t('ip','⽤户','密码','指定数据库',charset='utf8') #连接数据库
cur = con.cursor()  #定义⼀个游标
好,如果SQL较复杂,可以使⽤“”双引号代替
result = fetchall() #获取全部查询结果,fetchone()获取结果集的第⼀个数据
cur.close() #关闭游标
con.close() #关闭数据库连接
   1.3 定义⼀个执⾏SQL的函数,通过传参的⽅式将指定参数传⼊SQL。
     可以稍微对SQL的进⾏⼀些灵活性的改变,但是限制还是⽐较⼤。如:⼀个SQL查询不同班级的数据,班级的编号可以设置为传参,简化脚本。
     当然也可以之间将整个SQL作为⼀个参数传⼊函数,以达到
def execude_sql(args):  #定义⼀个执⾏SQL的函数
  con = t('ip','⽤户','密码','指定数据库',charset='utf8') #连接数据库
  cur = con.cursor()  #定义⼀个游标 
  ute('select id,name from student where class =%s',args)  #args即要传⼊SQL的参数
  result = fetchall()
  cur.close()
  con.close()
execude_sql(1024) #调⽤函数,查询class=1024的id和name
或者
def execude_sql(SQL):  #定义⼀个执⾏SQL的函数
  con = t('ip','⽤户','密码','指定数据库',charset='utf8') #连接数据库
  cur = con.cursor()  #定义⼀个游标 
  ute(SQL)  #执⾏指定SQL
  result = fetchall()
  cur.close()
  con.close()
execude_sql('select id,name from student where class =1024') #调⽤函数,查询class=1024的id和name
2、python写⼊Excel ------ xlwt
  2.1 简单的写⼊数据操作
  python写⼊Excel需要⼀个模块[xlwt],可想⽽知还有⼀个模块可专门⽤来读取Excel,这个模块较[xlwr],当然,本⽂重点主要是xlwt的使⽤。
以下我们通过定义⼀个写⼊excel的函数,直接完成SQL的执⾏以及写⼊excel,这种情况只能适⽤于将⼀整个SQL的查询结果写⼊excel的,⽐较简单。但是可能更多的时候我们对于⼀个excel的设计是⼀个SQL的查询⽆法满⾜的,需要拼接多个SQL的查询结果,如果是这种情况,我们可以先⾃定义⼀个SQL的执⾏函数,然后根据excel的设计来编写excel的写⼊函数。
以下⽰例只是简单的表达以下代码所实现的功能:
import xlwt
def wite_to_excel(name):
  filename = name + '.xls'  #定义Excel名字
  wbk = xlwt.Workbook()  #实例化⼀个Excel
  sheet1 = wbk.add_sheet('sheet1',cell_overwrite_ok=True) #添加该Excel的第⼀个sheet,如有需要可依次添加sheet2等
  fileds = [u'ID编号',u'名字'] #直接定义结果集的各字段名
  execude_sql(1024)  #调⽤函数执⾏SQL,获取结果集
  for filed in range(0,len(fileds)):  #写⼊字段信息
    sheet1.write(0,filed,fileds[i])
  for row in range(1,len(result)+1):  #写⼊SQL查询数据
    for col in range(0,len(fileds))
      sheet1.write(row,col,result[row-1][col])
  wbk.save(filename)  #保存Excel
  当然,获取Excel的字段信息也可以直接根据我们SQL语句来⾃动获取,这时我们就需要在开启执⾏SQL的游标后添加⼀条命令 fileds = cur.description即可。
  2.2 Excel格式调整
  直接导出的数据格式上难免有些参差不齐,我们可以使⽤xlwt来对Excel输出格式进⾏适当的调整。
def set_style(name,height,bold=False):
  style = xlwt.XFStyle() # 初始化样式
  font = xlwt.Font() # 为样式创建字体
  font.name = name # 'Times New Roman'
  font.bold = bold  #是否加粗,默认不加粗
  lor_index = 4excel连接sql数据库教程
  font.height = height  #定义字体⼤⼩
  style.font = font
  alignment = xlwt.Alignment() #创建居中
  alignment.horz = xlwt.Alignment.HORZ_CENTER #可取值: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED   alignment.vert = xlwt.Alignment.VERT_CENTER # 可取值: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED
  style.alignment = alignment # ⽂字居中
  添加以上格式调整的函数之后,在写⼊Excel时只需指定相应的格式即可,eg: sheet1.write(0,filed,fileds[i],set_style('宋体','200',True))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。