我对编码还很陌生,所以我在学习过程中学到了很多东西。这个问题让我难住了,尽管我可以在这里找到几个类似的问题,但我找不到一个有效的或具有我可识别的语法的问题。
我正在尝试从 JSON API 中抓取各种用户数据,然后将这些值存储在我设置的 MySQL 数据库中。
代码在大多数情况下似乎运行良好,但有些用户没有我试图在 JSON 中抓取的属性,因此我留下了似乎无法阻止的 Nonetype 错误。
如果可能的话,我想在数据库中存储“0”,其中 json 不包含该属性。
在下面的 m/snippet 中,这对于有工作的用户来说效果很好,但是没有工作的用户在工作职位上返回 Nonetype 并且显然打破了循环。
response = requests.get("URL")
json_obj = json.loads(response.text)
timer = json_obj['timestamp']
jobposition = json_obj['job']['position']
query = "INSERT INTO users (timer, jobposition) VALUES (%s, %s)"
values = (timer, jobposition)
cursor = db.cursor()
cursor.execute(query, values)
db.commit()
提前致谢!
最佳答案
您可以使用字典的 get() 方法,如下所示
timer = json_obj.get('timestamp', 0)
0 是默认值,如果没有“timestamp”属性,它将返回 0。 对于工作职位,你可以这样做
jobposition = json_obj['job'].get('position', 0) if 'job' in json_obj else 0
关于Python JSON 抓取 - 如何处理缺失值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61629389/