带有 pyodbc 的 Python 字典

标签 python mysql 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)

祝你好运!

关于带有 pyodbc 的 Python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226312/

相关文章:

mysql - 计算特定日期范围内MySQL中每行值的百分比

python - SQL Server 临时表在 pyodbc 代码中不可用

python - 为 pyodbc 创建类似于 PHP PDO 的 DSN。是否可以?

python - 存储过程多表 - PYODBC - Python

python - 希望对 heapq.nlargest 参数 'key' 进行澄清

python - 使用 __gte 作为字符串日期 django

Mysql连接三个表的数据(多对多关系)

python - 自定义指标的 Xgboost Early.stop.round 错误

python - 将 Pandas 系列文本隐藏为单词列表

ios - 在 iOS 应用程序中调用/测试 Web API