亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

利用python實現xml與數據庫讀取轉換的方法

系統 1808 0

前言

xml課的第三第四個作業都是用java編程來實現xml dom的一些轉換, 因為自己沒怎么學過java,因此和老師說了下想用python來實現第三第四個作業,下面就直接貼代碼了

xml文檔

            
              
                
                  X86-Windows2000
                
                
                  9 hours 42 minutes
                
                
                  zhangsan
                
                
                  computerZhang
                
              
              
                
                  router
                
                
                  24 hours
                
                
                  ruijie
                
                
                  Router2
                
              
              
                
                  router
                
                
                  89 hours
                
                
                  Cisco
                
                
                  Router3
                
              
            
          

解析xml文檔用的是python自帶的xml庫ElementTree, 讀取mysql可以安裝MySQLdb模塊

            
apt-get install python-MySQLdb
          

程序運行如下

            
root@lj /h/s/x/3# python 21.py -h
usage: 21.py [-h] status
 
positional arguments:
 status  0clar,1read,2insert
          

讀取xml保存到數據庫

            
root@lj /h/s/x/3# python 21.py 2
插入語句: insert into info values ('192.168.1.1','X86-Windows2000','9 hours 42 minutes','zhangsan','computerZhang')
插入語句: insert into info values ('192.168.1.3','router','24 hours','ruijie','Router2')
插入語句: insert into info values ('192.168.2.1','router','89 hours','Cisco','Router3')
insert success!!!
          

讀取數據庫保存到xml文檔

            
root@lj /h/s/x/3# python 21.py 1
+-------------+-----------------+--------------------+------------+---------------+
| IP地址 | sysDescr.0 | sysUpTime.0  | sysContact | sysName.0 |
+-------------+-----------------+--------------------+------------+---------------+
| 192.168.1.1 | X86-Windows2000 | 9 hours 42 minutes | zhangsan | computerZhang |
| 192.168.1.3 |  router  |  24 hours  | ruijie | Router2 |
| 192.168.2.1 |  router  |  89 hours  | Cisco | Router3 |
+-------------+-----------------+--------------------+------------+---------------+
write into sys.xml...
          

建立數據庫的sql文件:

            
-- MySQL dump 10.16 Distrib 10.1.21-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: localhost Database: localhost
-- ------------------------------------------------------
-- Server version 10.1.21-MariaDB-5
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 
--
-- Table structure for table `info`
--
 
DROP TABLE IF EXISTS `info`;
/*!40101 SET @saved_cs_client  = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `info` (
 `ip` char(15) NOT NULL,
 `sysDescr` varchar(20) DEFAULT NULL,
 `sysUpTime` varchar(40) DEFAULT NULL,
 `sysContract` varchar(20) DEFAULT NULL,
 `sysName` varchar(20) DEFAULT NULL,
 PRIMARY KEY (`ip`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `info`
--
 
LOCK TABLES `info` WRITE;
/*!40000 ALTER TABLE `info` DISABLE KEYS */;
INSERT INTO `info` VALUES ('192.168.1.1','X86-Windows2000','9 hours 42 minutes','zhangsan','computerZhang'),('192.168.1.3','router','24 hours','ruijie','Router2'),('192.168.2.1','router','89 hours','Cisco','Router3');
/*!40000 ALTER TABLE `info` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
-- Dump completed on 2017-03-23 15:36:31
          

下面是主要代碼

            
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2017-03-23 14:47:39
# @Author : 江sir (2461805286@qq.com)
# @Link : http://www.blogsir.com.cn
# @Version : $1.1
 
import sys
import xml.etree.ElementTree as ET
import MySQLdb
import argparse
from prettytable import PrettyTable 
 
'''
一個xml作業,自己用python實現了從xml讀取到數據庫,和從數據庫讀取到xml的功能
'''
 
def buildNewsXmlFile(data):
 
 
 root = ET.Element('sys_info')#創建sys_info根元素
 # print help(ET)
 info = ET.SubElement(root, "info",attrib={'ip':'%s'%data[0][0]})#創建四個二級元素
 sysDescr = ET.SubElement(info,"sysDescr")
 sysUpTime = ET.SubElement(info,"sysUpTime")
 sysContact = ET.SubElement(info,"sysContact")
 sysName = ET.SubElement(info,"sysName")
 sysDescr.text = data[0][1]
 sysUpTime.text = data[0][2]
 sysContact.text = data[0][3]
 sysName.text = data[0][4]
 
 info = ET.SubElement(root, "info",attrib={'ip':'%s'%data[1][0]})
 sysDescr = ET.SubElement(info,"sysDescr")
 sysUpTime = ET.SubElement(info,"sysUpTime")
 sysContact = ET.SubElement(info,"sysContact")
 sysName = ET.SubElement(info,"sysName")
 sysDescr.text = data[1][1]
 sysUpTime.text = data[1][2]
 sysContact.text = data[1][3]
 sysName.text = data[1][4]
 
 info = ET.SubElement(root, "info",attrib={'ip':'%s'%data[2][0]})
 sysDescr = ET.SubElement(info,"sysDescr")
 sysUpTime = ET.SubElement(info,"sysUpTime")
 sysContact = ET.SubElement(info,"sysContact")
 sysName = ET.SubElement(info,"sysName")
 sysDescr.text = data[2][1]
 sysUpTime.text = data[2][2]
 sysContact.text = data[2][3]
 sysName.text = data[2][4]
 
 print 'write into sys.xml...'
 tree = ET.ElementTree(root)
 tree.write("sys.xml")
 
 
def xml_parser():
 data = {}
 data_list = []
 tree = ET.parse('21.xml')
 root = tree.getroot()# 獲取根元素
 for info in root.findall('info'): #查找所有info元素
  for child in info: #對每個info元素遍歷屬性和子節點
   data ['ip']= info.attrib['ip']
   data[child.tag] = child.text
 
  # print data.values()
  data_list.append(data.values())
 
 
 # print data_list
 return data_list
 
 
 
def get_Mysql():
 conn = MySQLdb.connect('localhost','root','root','sys_info2',charset='utf8')
 cursor = conn.cursor()
 cursor.execute('select * from info');
 result = cursor.fetchall()
 if not result:
  print 'please insert the database first'
  sys.exit()
 
 
 x = PrettyTable(['IP地址','sysDescr.0','sysUpTime.0','sysContact','sysName.0'])
 for i in result:
  x.add_row(i)
 print x
 
 # print result
 return result
 
def set_Mysql(data):
 conn = MySQLdb.connect('localhost','root','root','sys_info2',charset='utf8')
 cursor = conn.cursor()
 for i in data:
  # print tuple(i)
  sysName,ip,sysUpTime,sysDescr,sysContact = tuple(i)
  sql = "insert into info values ('%s','%s','%s','%s','%s')"%(ip,sysDescr,sysUpTime,sysContact,sysName)
  print '插入語句:',sql
  try:
   cursor.execute(sql)
  except:
   print 'please clear the database'
   sys.exit()
 print 'insert success!!!'
 conn.commit()
 conn.close()
 
 
def clear_Mysql():
 conn = MySQLdb.connect('localhost','root','root','sys_info2',charset='utf8')
 cursor = conn.cursor()
 cursor.execute('delete from info')
 conn.commit()
 conn.close()
 
 
def main():
 parser = argparse.ArgumentParser()
 parser.add_argument('status',type=int,help="0clar,1read,2insert")
 arg = parser.parse_args()
 # print arg
 status = arg.status
 if status == 1:
  data = get_Mysql()
  buildNewsXmlFile(data)
 elif status == 2:
  data = xml_parser()
  set_Mysql(data)
 elif status == 0:
  clear_Mysql()
 else:
  print 'usage %s [0|1|2]'%sys.argv[0]
 
if __name__ == '__main__':
 main()
          

第四個作業是web編程,用python的flask框架即可快速實現一個xml文檔的顯示,文件過多,就不貼了

總結

以上就是這文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: www.欧美.com| 天天草比| 国产成人一区二区三区影院免费 | 亚洲国产99在线精品一区二区 | 欧美成人aaaaa免费视频 | 日本在线观看成人小视频 | 在线看h| 黄色在线免费网站 | 全部无卡免费的毛片在线看 | 奇米网在线视频 | 深夜激情网站 | 俄罗斯老妇性欧美毛茸茸孕交 | 99日韩 | 亚洲国产精品乱码在线观看97 | 国产欧美视频综合二区 | 你懂的日韩 | 国产成人一区二区三区精品久久 | 伊香蕉大综综综合久久 | 亚洲久久色 | 日本另类αv欧美另类aⅴ | 伊人五月天婷婷琪琪综合 | 日韩精品久久久久久 | 99热网站| 久久久精品久久久久久 | 日本一级特黄a大片在线 | 亚洲精品一区二区三区国产 | 久久精选 | 免费观看a毛片一区二区不卡 | 亚洲综合网址 | 美女a毛片| 亚洲高清视频在线观看 | 99热99色| 久久国产在线观看 | 国产尤物福利视频一区二区 | 免费国产午夜高清在线视频 | 2046影院视频大全在线观看 | 国产精品入口麻豆午夜 | 中文字幕在线视频在线看 | 久草香蕉视频在线观看 | 婷婷精品进入 | 黄片一级毛片 |