加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用xml技术导出数据库表里面的数据到excel

发布时间:2020-12-16 23:46:53 所属栏目:百科 来源:网络整理
导读:python有三种方法解析XML,SAX,DOM,以及ElementTree: 前两种方式解析xml过于繁琐,故使用第三种方式解析 下面是使用xml配置数据库的连接信息来操作数据库 必备的模块 pymysql??xml.dom.minidom? 代码如下 import pymysql from xml.dom.minidom import pars

python有三种方法解析XML,SAX,DOM,以及ElementTree:

前两种方式解析xml过于繁琐,故使用第三种方式解析

下面是使用xml配置数据库的连接信息来操作数据库

必备的模块 pymysql??xml.dom.minidom?

代码如下

import pymysql
from xml.dom.minidom import parse
import xml.dom.minidom
def decode_xml(filename):
    DOMTree = xml.dom.minidom.parse(filename)
    collection = DOMTree.documentElement
    databases=collection.getElementsByTagName(database1)
    print(databases)
    for database in  databases:
        hostname=database.getElementsByTagName(host)[0].childNodes[0].data
        user=database.getElementsByTagName(username)[0].childNodes[0].data
        passwd=database.getElementsByTagName(password)[0].childNodes[0].data
        port=database.getElementsByTagName(port)[0].childNodes[0].data
        port=int(port)
        db=database.getElementsByTagName(database)[0].childNodes[0].data
    return hostname,user,passwd,port,db

if __name__==__main__:
 res= decode_xml(./data.xml)
 host=res[0]
 user=res[1]
 passwd=res[2]
 port=res[3]
 db=res[4]
 conn=pymysql.connect(host=host,user=user,password=passwd,db=db,charset=utf8)
 cursor=conn.cursor()
 cursor.execute(select * from app_student)
 res=cursor.fetchall()
 print(res)

xml的内容如下

python写excel使用的是xlwt模块

下面就是使用xml技术导出数据库表为excel的全部代码

import xlwt
import pymysql
from xml.dom.minidom import parse
import xml.dom.minidom
def decode_xml(filename):
    DOMTree = xml.dom.minidom.parse(filename)
    collection = DOMTree.documentElement
    databases=collection.getElementsByTagName(database1)
    print(databases)
    for database in  databases:
        hostname=database.getElementsByTagName(host)[0].childNodes[0].data
        user=database.getElementsByTagName(username)[0].childNodes[0].data
        passwd=database.getElementsByTagName(password)[0].childNodes[0].data
        port=database.getElementsByTagName(port)[0].childNodes[0].data
        port=int(port)
        db=database.getElementsByTagName(database)[0].childNodes[0].data
        charset=database.getElementsByTagName(charset)[0].childNodes[0].data
        tablename=database.getElementsByTagName(tablename)[0].childNodes[0].data
        outputpath=database.getElementsByTagName(outputpath)[0].childNodes[0].data
    return hostname,db,charset,tablename,outputpath
def exportdatabase_excel(host,outputpath):
    conn=pymysql.connect(host=host,port=port,charset=utf8)
    cursor=conn.cursor()
    cursor.execute(select * from +tablename)
    cursor.scroll(0,mode=absolute)
    res=cursor.fetchall()
    print(res)
    fields=cursor.description#获取表头
    workbook=xlwt.Workbook()
    sheet=workbook.add_sheet(tablename,cell_overwrite_ok=True)
    print(dir(sheet))
    list2=[]
    for field in range(len(fields)) :
        sheet.write(0,field,fields[field][0])
        list2.append(fields[field][0])
    list1=[]
    print(list2)
    #获取写入数据
    for i in range(len(res)):
        for j in range(len(fields)):
            if ? in str(res[i][j]):
                break
        else:
            list1.append(list(res[i]))
    print(list1)
    list3=[list2]#list2返回的是一维数组,list1返回的是二维数组,要list2和list1合并则把list2转为二维数组
    list3.extend(list1)
    print(list3)
    for row in  range(0,len(list3)):
        for col in  range(0,len(list3[0])):
            sheet.write(row,col,list3[row][col])
    workbook.save(outputpath)
if __name__==__main__:
    res = decode_xml(./data.xml)
    host = res[0]
    user = res[1]
    passwd = res[2]
    port = res[3]
    db = res[4]
    charset=res[5]
    tablename=res[6]
    outputpath=res[7]
    exportdatabase_excel(host,outputpath)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读