python获取数据库中的数据表_python读取xml数据库中表内所有数据,获取数据库中所有表的字段名称...

本文介绍了如何使用Python的ElementTree模块从XML数据库中获取指定表格的数据和所有表格的字段名称。提供了两个函数:get_table_records()用于获取指定表的数据,get_table_field()用于获取所有表的字段名称。示例代码展示了如何解析XML文件并打印出相关信息。
摘要由CSDN通过智能技术生成

工作中需要读取指定xml数据库中的数据以及 表所需字段名,所以在已有例子中改进实现:

xml 数据库 xmldabase.xml:

获取指定表的数据:

from xml.etree import ElementTree

def get_table_records( xmlfile = None,text = None,table_name=None):

root=None

if xmlfile:

root = ElementTree.parse(xmlfile)

elif text:

root = ElementTree.fromstring(text)

node_findall = root.findall("table")

for e in node_findall:

for key,value in e.items():

if value==table_name:

print( "%s:%s" % (key, value) )

ar=e.findall('row')

for row in ar:

for k,v in row.items():

print( "%s:%s" % (k, v) )

获取所有表的字段名称:

def get_table_field(text =None, xmlfile =None):

root=None

if xmlfile:

root = ElementTree.parse(xmlfile)

elif text:

root = ElementTree.fromstring(text)

node_findall = root.findall("table")

for e in node_findall:

list_field=[]

for key,value in e.items():

# print( "%s:%s" % (key, value) )

first_row=e.find('row')

# print(type(first_row))

if first_row==None :

print('%s_need_fields=%s'%(value,list_field))

# continue

else:

for k,v in first_row.items():

list_field.append(k)

# print( "%s:%s" % (k, v) )

print('%s_need_fields=%s'%(value,list_field))

测试用例:

if __name__ == '__main__':

# get_table_records(text=open("xmldabase.xml").read(),table_name='PCI') #获取xml的方式不同,皆可用

get_table_records(xmlfile="xmldabase.xml",table_name='PCI')

get_table_field(xmlfile="xmldabase.xml")

输出结果:

name:PCI

class_name:Display controller

vendor_id:1a03

__mtime:8489775

host:OpaqueRef:d92d7211-482f-c68f-f89b-4c8b22faec1a

dependencies:()

_ref:OpaqueRef:1e2c98ee-a6fe-b1d5-e91c-d27911deb21d

device_id:2000

functions:1

uuid:5907d30d-7d53-4682-4ff1-ed32974cb3b6

class_id:03

other_config:()

__ctime:8489729

pci_id:0000:09:00.0

device_name:ASPEED Graphics Family

attached_VMs:()

vendor_name:ASPEED Technology, Inc.

ref:OpaqueRef:1e2c98ee-a6fe-b1d5-e91c-d27911deb21d

PCI_need_fields=['class_name', 'vendor_id', '__mtime', 'host', 'dependencies', '_ref', 'device_id', 'functions', 'uuid', 'class_id', 'other_config', '__ctime', 'pci_id', 'device_name', 'attached_VMs', 'vendor_name', 'ref']

xx_metrics_need_fields=['last_updated', 'vendor_id', '__mtime', '_ref', 'device_name', 'speed', 'device_id', 'uuid', 'duplex', 'other_config', '__ctime', 'pci_bus_path', 'io__write_kbs', 'carrier', 'io__read_kbs', 'vendor_name', 'ref']

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值