Python 带有 pyodbc 的字典

Python Dictionary with pyodbc

我正在尝试从一台服务器获取一些数据进行查询,但现在我想进行多个查询和多个连接,这就是问题所在:

我想做一个 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)

祝你好运!