0

我正在尝试在访问数据库中搜索某些事件,但我发现我的代码在进行搜索时会丢失一些内容。我发现他在找到第一个时错过了第二个。

示例:如果我有以下内容并且我正在寻找 T300 并且我有这个结构:

T200

T300

T300

它将捕获第一个 T300 并通过第二个 T300

enter code here
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()


 curs.execute("select * from gdo_segment")
 rows = curs.fetchall()
 for row in rows:
     T = 'T' + str(row.troncon) + '_' + row.noeud1 + '-' + row.noeud2
     if (T == Term ):
         print T


 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()       
4

1 回答 1

0

我假设它正在找到最后一项,这将是因为您的代码缩进。正确的缩进在 Python 中是必不可少的。文档

目前,您的if语句仅在所有循环完成后才适用,因此只会检查 T 的最后一个值。

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

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


    curs.execute("select * from gdo_segment")
    rows = curs.fetchall()
    for row in rows:
        T = 'T' + str(row.troncon) + '_' + row.noeud1 + '-' + row.noeud2
        if (T == Term ):
            print T

    curs.close()
    conn.close()
于 2013-07-31T11:47:26.297 回答