使用 psycopg 将 json 中的嵌套字段从 REST API 解析为 PostgreSQL

我正在使用python进行一个项目,其中我使用请求从REST API获取json,然后继续将其加载到PostgreSQL数据库中。API 响应的 json 的结构如下所示。我的主要问题是关于嵌套字段,如和嵌套在数组中的字段,如.location.latinfoinfo[0].value


{


"items": [

    {

        "id": 300436,

        "item_id_parent": null,

        "reference": "",

        "subreference1": "CAMS\/1",

        "subreference2": "CAMS\/1",

        "reference_alpha": null,

        "reference_numeric": null,

        "oid": "CAMS\/1",

        "code": null,

        "code_custom": null,

        "name": "284",

        "image": "https:\/\/static.inventsys.com.br\/278\/thumb\/f-3298886-200x200c.jpg",

        "situations": [],

        "project_id": 10762,

        "project": {

            "id": 10762,

            "name": "Fauna EGR",

            "color": null

        },

        "category_id": 20685,

        "category": {

            "id": 20685,

            "name": "EGR FAUNA - Armadilhas"

        },

        "area_id": null,

        "area": null,

        "location": {

            "lat": -30.136699676514,

            "lng": -50.910511016846,

            "address": {

                "region": "RS",

                "city": "Viamão",

                "district": null,

                "zipcode": null,

                "street": "Rodovia Tapir Rocha",

                "street_number": null,

                "desc": null,

                "full": "Rodovia Tapir Rocha Viamão \/ BR"

            }

        },



这里的问题是,如果我只使用前四个变量运行代码,它工作正常,所以我想当涉及到我想要解析的嵌套字段时,我的语法都是错误的。如何最好地引用这些字段?


提前感谢大家!


偶然的你
浏览 91回答 1
1回答

MYYA

供将来参考,像这样解决它:for item in registros:    armadilhafields = [    item['id'],    item['name'],    item['image'],    item['category_id'],    item['category']['name'],    item['location']['lat'],    item['location']['lng'],    item['files'][0]['url_orig'],    item['info'][0]['value'],    item['info'][1]['value'],    item['info'][2]['value'],    item['info'][3]['value'],    item['info'][4]['value'],    item['info'][5]['value'],    item['info'][6]['value'],    item['info'][7]['value'],    item['info'][8]['value'],    item['info'][9]['value'],    item['info'][10]['value'],    ]    my_data = [field for field in armadilhafields]    cur.execute("INSERT INTO egrfauna_armadilhas VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", tuple(my_data))conn.commit()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python