2017-09-14 3 views
1

Je suis en train de faire une requête d'un serveur prenant certaines données, mais maintenant je veux faire des requêtes multiples et de multiples connexions, c'est le problème:Python Dictionnaire avec pyodbc

Je veux faire une pour, en passant avec toutes mes connexions et enregistrer mes « dans » les conditions pour chacun:

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 

le problème est que lorsque j'ai imprimé mon résultat sur l'écran, il sauvé le dernier état, mais je sais pas pourquoi ...

Ceci est le résultat du dictionnaire:

{'172.59.80.101': '2474, 2475, 2477, 2476'} 

Mais il doit être parce que j'ai 2 serveurs:

{'172.59.80.01': '2474, 2475, 2477, 2476' '172.80.52.31': '54, 60, 80, 787'} 

Répondre

0

vous configurez le dictionnaire pour être vide dans la boucle for, il ne contiendra que le dernier jeu d'enregistrements. Essayez ceci:

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) 

Bonne chance!

+0

Ce code contient une vulnérabilité potentielle d'injection SQL. – RegularlyScheduledProgramming