我已经创建了用于在mysql中创建表的python脚本,并将json文件导入到mysql DB中。我在下面分享了
Json文件
{“ansible_facts”:{“ansible_network_resources”:{“l3_interfaces”:[{“name”:“GigabitEthernet0/0”},{“name”:“GigabitEthernet0/0.100”,“IPv4”:[{“address”:“172.1.1.1 255.255.255.252”}]},{“name”:“GigabitEthernet0/0.101”,“IPv4”:[{“address”:“172.1.1.1 255.255.255.252”}]},{“name”:“GigabitEthernet0/1”,“IPv4”:[{“
# Table creation in mysql db
import mysql.connector
mydb = mysql.connector.connect( host="IPaddress", user="user", password="pw", database="db")
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE Routers (ansible_net_hostname NVARCHAR(255), ansible_net_model NVARCHAR(255), ansible_network_resources NVARCHAR(255))")
# Importing Json file into Mysql - Python script
import json, pymysql
json_data=open("L3_out.json").read()
json_obj=json.loads(json_data)
con=pymysql.connect(host="IPaddress", user="user", password="pw", database="db")
cursor=con.cursor()
for item in json_obj:
ansible_net_hostname=item.get("ansible_net_hostname")
ansible_net_model=item.get("ansible_net_model")
ansible_network_resources=item.get("ansible_network_resources")
cursor.execute("insert into Routers(ansible_net_hostname,ansible_net_model,ansible_network_resources) value(%s,%s,%s)",(ansible_net_hostname,ansible_net_model,ansible_network_resources)
con.commit()
con.close()
首先,我们不清楚
for item in json_obj:
ansible_net_hostname=item.get("ansible_net_hostname")
工作。因为在你的例子中'item'是字典中的键。在您显示的文件中,只有一个根键“ansible_facts”。所以您正在尝试对字符串调用get()。要获取“Ansible_Network_Resources”的数据,请执行以下操作:
for key in json_obj:
ansible_network_resources=json_obj[key].get("ansible_network_resources")