我正在寻找使用os和pyodbc更新一列中的多行。我的代码如下:
def poll():
for x in device_query():
command = os.system('ping -n 1 %s' % x[4])
if command == 0 and x[8] == '':
cursor.execute('insert into CamTable (UnitStatus)', 'online')
cnxn.commit()
elif command == 0 and x[8] == 'offline':
cursor.execute("update CamTable set UnitStatus=? where UnitStaus='offline'", 'online')
cnxn.commit()
elif command != 0 and x[8] == '':
cursor.execute('insert into CamTable (UnitStatus)', 'offline')
cnxn.commit()
elif command != 0 and x[8] == 'online':
cursor.execute('update CamTable set UnitStatus=?', 'offline')
cnxn.commit()
else:
pass
但是,x [8]中的每一行都更新为相同的值。如何更新每行的特定状态?
谢谢。
您需要一个WHERE子句,否则它将更新表中的所有行:
cursor.execute('update CamTable set UnitStatus=?', 'offline')
请阅读此处有关UPDATE查询和INSERT查询的文档,您似乎语法错误:
https://code.google.com/p/pyodbc/wiki/GettingStarted
作为不正确语法的另一个示例,这是:
cursor.execute('insert into CamTable (UnitStatus)', 'online')
应该是这样的:
cursor.execute('insert into CamTable (UnitStatus) VALUES (?)', 'online')
修复语法后,更多上下文也将有所帮助,因此我们可以确定您实际在if子句中的哪个位置执行。您从哪里获得device_query()的?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句