【发布时间】:2021-05-19 17:01:36
【问题描述】:
我已经设法从 API 中提取了一些信息,但它的格式对于像我这样的新手程序员来说很难。我可以将它保存到文件或将其移动到新列表等,但让我感到困惑的是我是否应该不弄乱数据并按原样插入,或者 - 我是否将其变成人类类型的格式并基本上将其解构为之后使用?
JSON 已经很困难了,因为它在嵌套字典中,并且值是一个列表。因此,在尝试完之后,我希望它实际上位于数据库中。我现在使用postgresql作为数据库,正在学习python。
response = requests.post(url3, headers=headers)
jsonResponse = response.json()
my_data = jsonResponse['message_response']['scanresults'][:]
store_list = []
for item in my_data:
dev_details = {"mac":None, "user":None, "resource_name":None}
dev_details['mac'] = item['mac_address']
dev_details['user'] = item['agent_logged_on_users']
dev_details['devName'] = item['resource_name']
store_list.append(dev_details)
try:
connection = psycopg2.connect(
user="",
other_info="")
# create cursor to perform db actions
curs = connection.cursor()
sql = "INSERT INTO public.tbl_devices (mac, user, devName) VALUES (%(mac)s, %(user)s, %(devName)s);"
curs.execute(sql, store_list)
connection.commit()
finally:
if (connection):
curs.close()
connection.close()
print("Connection terminated")
我最终得到了一个字典作为列表中的记录: [{rec1},{rec2}..etc]
自然而然地将信息放入数据库中,它抱怨“列表索引必须是整数或切片”,因此需要一些关于 A)将其添加到数据库表中的方法或 B)使用不同方法的建议。
在此先感谢
【问题讨论】:
-
所以我觉得烦人的事情是:1)将记录插入到 postgres 列名似乎必须是小写的,可能看起来像 psycopg2 的东西? 2) 我导入了 pandas 并使用了一个数据框来获取那里的记录。
-
3) 仍然需要了解有关结构的更多信息,但 JSON 对象可能没有帮助(即为什么将值存储在本身就是字典值的列表中,这是一个子字典.. 等等 让我大吃一惊)现在我已经接近了我需要的地方,关于将字符串值强制为新数据类型的任何想法,即“1571323246400”> 日期?
标签: python json postgresql