Python访问odbc,应该跳过

2024-10-04 01:35:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用MS Access导入表信息。下表:

Field1   Field2
U1a14    High Speed Link
U0001    Medium speed data
U0022    Low Speed Link 

我的代码值如下:code = U1a14 code = U0001 code = B11DB (This code is not present in table)

我正在连接到odbc并在表中搜索代码

connection = pypyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;SafeTransactions=0;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\PYTHON27;DBQ=C:\PYTHON27\iso14229dtcs.mdb;')
cursor1 = connection.cursor()
cursor1.execute("SELECT Field2 FROM Table Where Field1 = '{}'".format(code))

for row in cursor1.fetchone():
  print row

我得到错误:

error:
for row in cursor1.fetchone():
TypeError: 'NoneType' object is not iterable

如何修复它,如果代码不在我的表中,它应该跳过并只打印现有行


Tags: 代码inaccessislinknotcodems
1条回答
网友
1楼 · 发布于 2024-10-04 01:35:17

将代码更改为以下内容,检查cursor1.fetchone()是否不为NULL

    connection = pypyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;SafeTransactions=0;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\PYTHON27;DBQ=C:\PYTHON27\iso14229dtcs.mdb;')
    cursor1 = connection.cursor()
    cursor1.execute("SELECT Field2 FROM Table Where Field1 = '{}'".format(code))
    row = cursor1.fetchone()
    while row is not None:
        print row[0], row[1]
        row = cursor1.fetchone()
    cursor1.close()
    connection.close()

相关问题 更多 >