【问题标题】:Python Dictionary with pyodbcPython 字典与 pyodbc
【发布时间】:2017-09-14 18:48:20
【问题描述】:

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

我想创建一个 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'}

但一定是这样,因为我有两台服务器:

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

【问题讨论】:

    标签: python mysql pyodbc


    【解决方案1】:

    您在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)
    

    祝你好运!

    【讨论】:

    • 此代码包含潜在的 SQL 注入漏洞。
    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多