10.4-XML文件数据库案例

在这里插入图片描述在这里插入图片描述

1.建立Fish_DB(Fish_DB_class.py)

import os
from build_XML import BuildNewXML
class FishDB(BuildNewXML):
    def __init__(self,filename=None):
        super().__init__(filename=None)
        self.path=''

    def check_path(self):                 #确保先建立指定的文件路径
        try:
            if self.path=='':
                print("请先设置正确的路径名,再执行代码!")
                return
            elif not os.path.isdir(self.path):
                os.makedirs(self.path)
            self.filename=self.path+self.filename
        except:
            print("子文件夹%s建立出错!"%(self.path)) 

2.引用FishDB写业务数据(Write_FishDB.py)

from FishDB_class import FishDB

content1={1:[0,'<fish day="2018-1-1">'],
         2:[4,'<goods>'],
         3:[8,'<name>鲫鱼</name>'],
         4:[8,'<amount>17</amount>'],
         5:[8,'<price>10.5</price>'],
         6:[4,'</goods>'],
         7:[4,'<goods>'],
         8:[8,'<name>鲤鱼</name>'],
         9:[8,'<amount>8</amount>'],
         10:[8,'<price>6.2</price>'],
         11:[4,'</goods>'],
         12:[4,'<goods>'],
         13:[8,'<name>鲢鱼</name>'],
         14:[8,'<amount>7</amount>'],
         15:[8,'<price>4.7</price>'],
         16:[4,'</goods>'], 
         17:[0,'</fish>']}

content2={1:[0,'<fish day="2018-1-2">'],
         2:[4,'<goods>'],
         3:[8,'<name>草鱼</name> '],
         4:[8,'<amount>2</amount>'],
         5:[8,'<price>7.2</price>'],
         6:[4,'</goods>'],
         7:[4,'<goods>'],
         8:[8,'<name>鲫鱼</name> '],
         9:[8,'<amount>3</amount>'],
         10:[8,'<price>12</price>'],
         11:[4,'</goods>'],
         12:[4,'<goods>'],
         13:[8,'<name>黑鱼</name> '],
         14:[8,'<amount>6</amount>'],
         15:[8,'<price>15</price>'],
         16:[4,'</goods>'],
         17:[0,'</fish>']}

content3={1:[0,'<fish day="2018-1-3">'], 
         2:[4,'<goods>'],
         3:[8,'<name>乌鱼</name> '],
         4:[8,'<amount>1</amount>'],
         5:[8,'<price>78.10</price>'],
         6:[4,'</goods>'],
         7:[4,'<goods>'],
         8:[8,'<name>鲫鱼</name> '],
         9:[8,'<amount>1</amount>'],
         10:[8,'<price>10.78</price>'],
         11:[4,'</goods>'],
         12:[4,'<goods>'],
         13:[8,'<name>草鱼</name> '],
         14:[8,'<amount>5</amount>'],
         15:[8,'<price>7.92/price>'],
         16:[4,'</goods>'],
         17:[0,'</fish>']}
new_xml=FishDB()
DBRecord=[] #索引记录
DBRecord.append([0,'<DBrecord">'])
def writeDBrecord(DBR,no,filename,path,date,dbName):
    DBR.append([4,'<record>'])
    DBR.append([8,'<no>'+str(no)+'</no>'])
    DBR.append([8,'<filename>'+filename+'</filename>'])
    DBR.append([8,'<path>'+path+'</path>'])
    DBR.append([8,'<date>'+date+'</date>'])
    DBR.append([8,'<dbName>'+dbName+'</dbName>'])
    
#====================写入2018年1月1日的钓鱼记录
filename="Fish_record1.xml"
new_xml.filename="\\"+filename
new_xml.path="d:\cat_fish"
new_xml.check_path()
flag=False
try:
    new_xml.openfile()
    for get_item in content1.items():
        new_xml.writeXML(get_item[1][0],get_item[1][1])
        flag=True
except:
    print('往文件内容出错,退出程序!')
    sys.exit()
finally:
    if flag:
        new_xml.closeXML()
        print('往%s写内容完成!'%(filename))
        writeDBrecord(DBRecord,1,'Fish_record1.xml','d:\cat_fish','2018-1-1','Cat_Fish')

#====================写入2018年1月2日的钓鱼记录
filename="Fish_record2.xml"
new_xml.filename="\\"+filename
new_xml.path="d:\cat_fish"
new_xml.check_path()
flag=False
try:
    new_xml.openfile()
    for get_item in content2.items():
        new_xml.writeXML(get_item[1][0],get_item[1][1] )
        flag=True
except:
    print('往文件内容出错,退出程序!')
    sys.exit()
finally:
    if flag:
        new_xml.closeXML()
        print('往%s写内容完成!'%(filename))
        writeDBrecord(DBRecord,2,'Fish_record2.xml','d:\cat_fish','2018-1-2','Cat_Fish')
#====================写入2018年1月3日的钓鱼记录
filename="Fish_record3.xml"
new_xml.filename="\\"+filename
new_xml.path="d:\cat_fish"
new_xml.check_path()
flag=False
try:
    new_xml.openfile()
    for get_item in content3.items():
        new_xml.writeXML(get_item[1][0],get_item[1][1] )
        flag=True
except:
    print('往文件内容出错,退出程序!')
    sys.exit()
finally:
    if flag:
        new_xml.closeXML()
        print('往%s写内容完成!'%(filename))
        writeDBrecord(DBRecord,3,'Fish_record3.xml','d:\cat_fish','2018-1-3','Cat_Fish')
DBRecord.append([0,'</DBrecord">'])
#====================写入索引记录
filename="index_database.xml"
new_xml.filename="\\"+filename
new_xml.path="d:\cat_fish"
new_xml.check_path()
flag=False
try:
    new_xml.openfile()
    for get_item in DBRecord:
        new_xml.writeXML(get_item[0],get_item[1])
        flag=True
except:
    print('往文件内容出错,退出程序!')
    sys.exit()
finally:
    if flag:
        new_xml.closeXML()
        print('往%s写内容完成!'%(filename))

C:\Anaconda3\python.exe D:/AI/三酷猫源代码/10/Write_FishDB.py
往storehouse.xml写内容完成!
往Fish_record1.xml写内容完成!
往Fish_record2.xml写内容完成!
往Fish_record3.xml写内容完成!
往index_database.xml写内容完成!

Process finished with exit code 0

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值