如何在Python中处理Web SQL查询和xml回复

时间:2016-08-12 11:17:14

标签: python web-services xml-parsing

我有一个远程数据库,我可以通过这样的Web服务发送SQL select查询:

http://aa.bb.cc.dd:85/SQLWEB?query=select+*+from+machine&output=xml_v2

返回

<Query>
    <SQL></SQL>
    <Fields>
        <MACHINEID DataType="Integer" DataSize="4"/>
        <NAME DataType="WideString" DataSize="62"/>
        <MACHINECLASSID DataType="Integer" DataSize="4"/>
        <SUBMACHINECLASS DataType="WideString" DataSize="22"/>
        <DISABLED DataType="Integer" DataSize="4"/>
    </Fields>
    <Record>
        <MACHINEID>1</MACHINEID>
        <NAME>LOADER</NAME>
        <MACHINECLASSID>16</MACHINECLASSID>
        <SUBMACHINECLASS>A</SUBMACHINECLASS>
        <DISABLED>0</DISABLED>
    </Record>
    <Record>
    ...
    </Record>
...
</Query>

然后我需要将记录插入本地SQL数据库。

最简单的方法是什么?谢谢!

1 个答案:

答案 0 :(得分:1)

首先,在网址中查询这是一个安全的可怕想法。

使用xml libs解析xml,然后遍历结果以添加到db。

import xml.etree.ElementTree as ET
tree = ET.parse('xml file')
root = tree.getroot()    
# root = ET.fromstring(country_data_as_string) if you use a string
for record in root.findall('Record'):
    MACHINEID = record.get('MACHINEID')
    NAME = record.get('NAME')
    MACHINECLASSID = record.get('MACHINECLASSID')
    SUBMACHINECLASS = record.get('SUBMACHINECLASS')
    DISABLED = record.get('DISABLED')
    #your code to add this result to the db

ElementTree XML API