搜索访问数据库中的事件

时间:2013-07-31 11:00:19

标签: python ms-access

我正在尝试在访问数据库中搜索某些事件,但我发现我的代码在进行搜索时会遗漏某些内容。 我发现他错过了第二次出现时的第二次出现。

例如:如果我有同伴并且我正在寻找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()       

1 个答案:

答案 0 :(得分:0)

我认为它找到了最后一项,这是因为你的代码缩进。在Python中,正确的缩进是必不可少的。 the docs

目前,您的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()