当前位置:   article > 正文

python从数据库中取出文件保存到excel,csv表格中的办法:_python数据库导出到excel

python数据库导出到excel

需求:

从数据库中查询出的数据,直接保存到excel表格中的两种办法:

这里从sqlite3中查询出来的数据是这样的:

values 值为:[('31010251001390002578', 'xxx路门前南全东1'), ('31010251001390004176', 'XXX路门南全西'),('31010251001390002577', 'xxx路门前南全东2'),('31010251001390002512', 'xxx路门前南全东567'),('31010251001390002100', 'xxx路门前南全东8'),('31010251001390002999', 'xxx路门前南全东119'),('3101025100139009111', 'xxx路门前南全东11'),...]

values 值为:

[('31010251001390002578', 'xxx路门前南全东1'),

('31010251001390004176', 'XXX路门南全西'),

('31010251001390002577', 'xxx路门前南全东2'),

('31010251001390002512', 'xxx路门前南全东567'),

('31010251001390002100', 'xxx路门前南全东8'),

('31010251001390002999', 'xxx路门前南全东119'),

('3101025100139009111', 'xxx路门前南全东11'),...]


 其中每一项是一个元组:

('31010251001390002578', 'xxx路门前南全东1')

 把上述数据保存到excel表格的去:



 excel保存数据方法:

方法一:excel库 xlsxwriter

  1. ######################excel-1-第一种保存的方法#################################3
  2. # ###from xlsxwriter.workbook import Workbook
  3. # ##### excel 读取库
  4. # # 1.workbook = Workbook('output.xlsx')
  5. # workbook = Workbook(excelname) #output.xlsx
  6. # worksheet=workbook.add_worksheet()
  7. #
  8. #
  9. #
  10. # #############连接sqlite3数据库,运行查询命令,获取查询结构;
  11. # conn = sqlite3.connect("./datacheck.db")
  12. # cur = conn.execute(strsql)
  13. # values = cur.fetchall() # 查询结果集
  14. # #################values [('31010251001390002578', 'xxx路门前南全东'), ('31010251001390004176', 'XXX路门南全西'),...]
  15. # ################保存到excel表格中
  16. #
  17. # for i,row in enumerate(values):
  18. # for j,value in enumerate(row):
  19. # worksheet.write(i,j,value)
  20. # # print(f"i={i},j={j},value={value}") #i,j,value分别对应的值 i=7842,j=1,value=xxx路口西门全景1 ;i=7842,j=0,value=31011353001910138692
  21. #
  22. # workbook.close()
  23. #####################excel-1-第一种保存的方法##################################
  24. ############################################################################
  25. cur.close() #游标关闭
  26. conn.close() #连接关闭


方法2:openpyxl库

  1. #################excel第二种保存方法:###################################
  2. wb=openpyxl.Workbook()
  3. wbsheet=wb.create_sheet("结果")
  4. # 连接sqlite3数据库,运行查询命令,获取查询结构;
  5. conn = sqlite3.connect("./datacheck.db")
  6. cur = conn.execute(strsql)
  7. values = cur.fetchall() #查询结果集
  8. for row in values:
  9. wbsheet.append(row)
  10. #print(row)
  11. wb.save(excelname) #保存文件名称
  12. cur.close() #游标关闭
  13. conn.close() #连接关闭


下面是函数代码:

函数参数:

sqlanylistShare(sqlstement,excelname):

第一个是执行的sql命令,第二个参数是excel表格的名称,例如“xx市服装对比数据.xlsx”

  1. def sqlanylistShare(sqlstement,excelname):
  2. #sql指令,用于寻找两个表中国标id相同的信息
  3. # strsql="select netwl.gbid,netwl.devicename from netwl inner join checkdata on netwl.gbid=checkdata.gbid"
  4. strsql=sqlstement
  5. # 2.excel写库 openpyxl
  6. #################excel第二种保存方法:###################################
  7. wb=openpyxl.Workbook()
  8. wbsheet=wb.create_sheet("结果")
  9. # 连接sqlite3数据库,运行查询命令,获取查询结构;
  10. conn = sqlite3.connect("./datacheck.db")
  11. cur = conn.execute(strsql)
  12. values = cur.fetchall() #查询结果集
  13. for row in values:
  14. wbsheet.append(row)
  15. print(row)
  16. wb.save(excelname) #保存文件名称
  17. #################excel第二种保存方法:###################################
  18. ######################excel-1-第一种保存的方法#################################3
  19. # ###from xlsxwriter.workbook import Workbook
  20. # ##### excel 读取库
  21. # # 1.workbook = Workbook('output.xlsx')
  22. # workbook = Workbook(excelname) #output.xlsx
  23. # worksheet=workbook.add_worksheet()
  24. #
  25. #
  26. #
  27. # #############连接sqlite3数据库,运行查询命令,获取查询结构;
  28. # conn = sqlite3.connect("./datacheck.db")
  29. # cur = conn.execute(strsql)
  30. # values = cur.fetchall() # 查询结果集
  31. # #################values [('31010251001390002578', 'xxx路门前南全东'), ('31010251001390004176', 'XXX路门南全西'),...]
  32. # ################保存到excel表格中
  33. #
  34. # for i,row in enumerate(values):
  35. # for j,value in enumerate(row):
  36. # worksheet.write(i,j,value)
  37. # # print(f"i={i},j={j},value={value}") #i,j,value分别对应的值 i=7842,j=1,value=xxx路口西门全景1 ;i=7842,j=0,value=31011353001910138692
  38. #
  39. # workbook.close()
  40. #####################excel-1-第一种保存的方法##################################
  41. ############################################################################
  42. cur.close() #游标关闭
  43. conn.close() #连接关闭



csv文件的保存方法:

jieguovalues 值为:

[('31010251001390002578', 'xxx路门前南全东1'),

('31010251001390004176', 'XXX路门南全西'),

('31010251001390002577', 'xxx路门前南全东2'),

('31010251001390002512', 'xxx路门前南全东567'),

('31010251001390002100', 'xxx路门前南全东8'),

('31010251001390002999', 'xxx路门前南全东119'),

('3101025100139009111', 'xxx路门前南全东11'),...]

  1. jieguovalues = cursor.fetchall()
  2. # sipidfilename = sipid + ".xlsx"
  3. sipidfilename = sipid + ".csv"
  4. # wb = openpyxl.Workbook()
  5. # wbsheet = wb.create_sheet("结果")
  6. #########csv文件保存方式###############
  7. fscv=open(sipidfilename,'w')
  8. writer=csv.writer(fscv)
  9. for value in jieguovalues:
  10. writer.writerow(value)
  11. fscv.close()


csv文件保存字典格式数据:

  1. # 直接字典字段写入到CSV文件中
  2. # coding:utf-8
  3. import csv
  4. data = {'id':'123','name':'anjing','age':'26'}
  5. with open('123.csv','w')as f:
  6. fieldnames = {'id','name','age'} # 表头
  7. writer = csv.DictWriter(f,fieldnames=fieldnames)
  8. writer.writeheader()
  9. writer.writerow(data)

如果出现空行的问题,优化

  1. # coding:utf-8
  2. import csv
  3. data = {'id':'123','name':'anjing','age':'26'}
  4. # 加入参数“enwline=''
  5. with open('123.csv','w',newline='')as f:
  6. fieldnames = {'id','name','age'}
  7. writer = csv.DictWriter(f,fieldnames=fieldnames)
  8. writer.writeheader()
  9. writer.writerow(data)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/967422
推荐阅读
相关标签
  

闽ICP备14008679号