我正在使用四个选择查询从数据库中获取数据。数据的方式使得选择查询的输入可能为空。在这种情况下,可以使特定的select语句不起作用。简而言之,我想要的是应该触发这四个select语句,无论其他查询是否失败,无论哪个语句都可以工作。
if (2 -eq 2)
{
write-host "1"
if (2 -eq 2)
{
write-host "here"
if (2 -eq 2)
{ {
write-host "here3"
}
else
{
write-host "here4"
}
}
else
{
write-host "here5"
}
}
答案 0 :(得分:2)
是的,只是将其放入for循环中。
ip_list = [ip_i, ip_n, ip_c, ip_b]
result_list = []
for ip in ip_list:
try:
cur.execute("select IP_ADD,VENDOR,DVC_ROLE,CIRCLE,SSA,REGION from DVC_SUMMARY_DATA where IP_ADD in (%s);" % ip)
except Exception as e:
print("error while fetching details " + str(e))
result_list.append(cur.fetchall())
我猜测cur.fetchall()不会生成错误,如果它生成了或者您不希望它运行,那么您可以将其放入尝试版本中。
所以我将其更改为此,以跟踪哪些生成的错误;
ip_list = [ip_i, ip_n, ip_c, ip_b]
result_list = []
for ip in ip_list:
try:
cur.execute("select IP_ADD,VENDOR,DVC_ROLE,CIRCLE,SSA,REGION from DVC_SUMMARY_DATA where IP_ADD in (%s);" % ip)
result_list.append(cur.fetchall())
except Exception as e:
print("error while fetching details " + str(e))
result_list.append("ERROR")
答案 1 :(得分:0)
将IP地址变量添加到列表中,然后遍历该列表。在这里,我使用traceback
模块来打印整个堆栈跟踪信息(不仅仅是异常),而且我还在fetchall
块内执行try
,否则,如果出现异常确实会在您尝试不获取任何内容的execute
期间发生。
import traceback
ip_list = [ ip_i, ip_n, ip_c, ip_b ]
for ip in ip_list:
try:
cur.execute("select IP_ADD,VENDOR,DVC_ROLE,CIRCLE,SSA,REGION from DVC_SUMMARY_DATA where IP_ADD in (%s);" % ip)
result = cur.fetchall()
except Exception as e:
print(traceback.format_exc())