【发布时间】:2017-12-12 06:09:00
【问题描述】:
最初是我个人的倡议,最终成为一个安静有趣(我可以说,在某种程度上具有挑战性)的项目。我的公司决定逐步淘汰一种产品并用新产品替换它,它不是将数据存储在 mdb 文件中,而是使用 JSON 文件。所以我主动创建了一个转换器,它将读取已经创建的 mdb 文件并将它们转换为新格式的 JSON。 但是,现在我对这个问题束手无策:
我可以读取 mdb 文件,运行查询以提取特定数据。 通过将 targetobj 放在 FOR LOOP 中,我设法为每一行提取数据并输入到 dict(targetobj)
for val in rows:
targetobj={"connection_props": {"port": 7800, "service": "", "host": val.Hostname, "pwd": "", "username": ""},
"group_list": val.Groups, "cpu_core_cnt": 2, "target_name": "somename", "target_type": "somethingsamething",
"os": val.OS, "rule_list": [], "user_list": val.Users}
如果我将 targetobj 打印到控制台,我可以清楚地获取每一行的所有提取值。
现在,我的任务是将获得的结果(对于每一行)插入到 targets:[] 键下的 main_dict 中。 (请参见 JSON 文件示例进行说明)
main_dict = {"changed_time": 0, "year": 0, "description": 'blahblahblah', 'targets':[应在此处添加 TARGETOBJ 的结果],"enabled": False}
例如,我的 Json 文件应该具有如下结构:
{"changed_time":1234556,
"year":0,
"description":"blahblahblah",
"targets":[
{"group_list":["QA"],
"cpu_core_cnt":1,
"target_name":"NewTarget",
"os":"unix",
"target_type":"",
"rule_list":[],
"user_list":[""],"connection_props":"port":someport,"service":"","host":"host1","pwd":"","username":""}
},
{"group_list":[],
"cpu_core_cnt":2,
"target_name":"",
"os":"unix",
"target_type":"",
"rule_list":[],
"user_list":["Web2user"],
"connection_props":{"port":anotherport,"service":"","host":"host2","pwd":"","username":""}}
],
"enabled":false}
到目前为止,我一直在这里和那里进行调整,以按预期写入结果,但是每次,我只得到写入的最后一行值。 即:将targetobj作为变量放在目标中:[]
{"changed_time": 0, "year": 0, "description": 'ConvertedConfigFile', 'targets':[targetobj],
我知道我错过了一些东西,我只需要找到什么和在哪里。 任何帮助将不胜感激。 谢谢
【问题讨论】:
标签: json python-2.7 dictionary