我正在尝试从一台服务器获取一些数据进行查询,但现在我想进行多个查询和多个连接,这就是问题所在:
我想做一个 for,传递我所有的连接并为每个连接保存我的“IN”条件:
if len(su_dict['dst_srv']) > 1:
su_dict['skill'].clear()
su_dict['vdn'].clear()
i = 0
for x in range(len(su_dict['dst_srv'])):
skill_varios = {}
sql = ("SELECT skill FROM info_skill_vdn_campana WHERE activo = 1 AND pbx = 'V2' AND dst_srv = '"+str(list(su_dict['dst_srv'])[i])+"';")
skill = crsr_kala.execute(sql).fetchall()
skill_varios[str(list(su_dict['dst_srv'])[i])] = ', '.join([x[0] for x in skill])
i += 1
print skill_varios
这里的问题是,当我在屏幕上打印我的结果时,它只保存了最后一个 IN 条件,但我不知道为什么......
这是字典的结果:
{'172.59.80.101': '2474, 2475, 2477, 2476'}
但肯定是这样,因为我有2台服务器:
{'172.59.80.01': '2474, 2475, 2477, 2476' '172.80.52.31': '54, 60, 80, 787'}
最佳答案
您在 for
循环中将字典设置为空白,因此它将只包含最后一个记录集。试试这个:
if len(su_dict['dst_srv']) > 1:
su_dict['skill'].clear()
su_dict['vdn'].clear()
i = 0
skill_varios = {}
for x in range(len(su_dict['dst_srv'])):
sql = ("SELECT skill FROM info_skill_vdn_campana WHERE activo = 1 AND pbx = 'V2' AND dst_srv = '"+str(list(su_dict['dst_srv'])[i])+"';")
skill = crsr_kala.execute(sql).fetchall()
skill_varios[str(list(su_dict['dst_srv'])[i])] = ', '.join([x[0] for x in skill])
i += 1
print(skill_varios)
祝你好运!
关于带有 pyodbc 的 Python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226312/