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