首页 > 解决方案 > 如何从 Python 中的查询中返回所有数据

问题描述

如何从该查询中正确数量的行返回所有数据。我有它, for row in results['results']: print(row)但我确定那是错误的,因为当我在 sql 中运行它时,它会返回更多。提前致谢!

results = swis.query("SELECT "
                 "n.Caption AS NodeCaption"
                 ",n.IP_Address AS IPAddress"
                 ",n.NodeID"
                 ",a.ApplicationID "
                 ",n.Uri AS NodeUri "
                 ",n.Uri AS AppUri "
                 "FROM Orion.Nodes n "
                 "JOIN Orion.APM.Application a ON n.NodeID = a.NodeID "
                 "JOIN Orion.APM.ApplicationTemplate at ON a.ApplicationTemplateID = at.ApplicationTemplateID "
                 "WHERE at.Name IN('Process_Monitor - Dynatrace Linux OneAgent', 'Service_Monitor - Dynatrace"
                 "OneAgent Service')")

for row in results['results']:
print(row)

标签: pythonsqlsolarwinds-orionswissql

解决方案


查询的结构在 select 语句之间有太多空格。重写了查询,它按预期工作。

query = ("SELECT\n"
         "n.Caption AS NodeCaption\n"
         ",n.IP_Address AS IPAddress\n"
         ",n.NodeID\n"
         ",a.ApplicationID\n"
         ",n.Uri AS NodeUri\n"
         ",a.Uri AS AppUri\n"
         "FROM Orion.Nodes n\n"
         "JOIN Orion.APM.Application a ON n.NodeID = a.NodeID\n"
         "JOIN Orion.APM.ApplicationTemplate at ON a.ApplicationTemplateID = at.ApplicationTemplateID\n"
         "WHERE at.Name IN ('Process_Monitor - Dynatrace Linux OneAgent', 'Service_Monitor - Dynatrace OneAgent "
         "Service')")

推荐阅读