Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从XML文件访问搜索_Python_Xml_Ms Access - Fatal编程技术网

Python 从XML文件访问搜索

Python 从XML文件访问搜索,python,xml,ms-access,Python,Xml,Ms Access,我的代码在XML文件(函数“findTerminal”)中搜索特定的属性名称,并将其传递给另一个函数(称为DBAccess)以在access数据库中查找该属性。 属性名没有连接到数据库中,我必须这样做才能进行比较。 但是当我执行代码时什么都没发生 import csv import pyodbc from xml.dom import minidom # ************************************* def DBAccess (Term): MDB = '

我的代码在XML文件(函数“findTerminal”)中搜索特定的属性名称,并将其传递给另一个函数(称为DBAccess)以在access数据库中查找该属性。 属性名没有连接到数据库中,我必须这样做才能进行比较。 但是当我执行代码时什么都没发生

import csv
import pyodbc
from xml.dom import minidom



# *************************************

def DBAccess (Term):
 MDB = 'c:/test/mydb.mdb'
 DRV = '{Microsoft Access Driver (*.mdb)}'
 PWD = ''

 conn = pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s' % (DRV,MDB,PWD))
 curs = conn.cursor()


 print 'connexion opened'
 SQL = 'SELECT * FROM gdo_arc;' # insert your query here
 curs.execute(SQL)


 curs.execute("select nat_arc from gdo_segment")
 rows = curs.fetchall()
 for row in rows:
      T = 'T' + row.tronson + '_' + row.noued1 + '-' + row.noued2
      if T == Term :
         print (' Terminal found')

 curs.close()
 conn.close()





#*************************************

def findTerminal():

 xmldoc = minidom.parse('c:\\test\mydoc.xml')
 #printing the number of blocs in my xml file
 itemlist = xmldoc.getElementsByTagName('ACLineSegment') 

 for item in itemlist:
     found = False
     for child in item.childNodes:
        if child.nodeName == 'Terminal':
            found = True
     if not found:
         Term = item.getAttribute('Name')
         DBAccess (Term)        

 #***********************************


findTerminal()

您的
findTerminal
函数有一个
if not found
条件,该条件看起来应该是
if found
(根据您的问题描述)。另外,在
DBAccess
函数中,您有两个连续的
curs.execute()
调用,它们运行两个不同的SELECT查询,因此不会使用第一个SELECT查询的结果。经过一些更改后,我得到了以下错误:回溯(最近一次调用):findTerminal()文件“C:\test\pgm.txt”第57行中的文件“C:\test\pgm.txt”,第52行,在findTerminal DBAccess(Term)文件“C:\test\pgm.txt”的第14行,在DBAccess conn=pyodbc.connect('DRIVER=%s;DBQ=%s;PWD=%s'(DRV,MDB,PWD))中,错误:('IM002','IM002][Microsoft][Gestionnaire de pilotes ODBC Source de donn\xe9es可插入和非sp\xe9cifi xe9(0)(SQLDriverConnect 0)'))