繁体   English   中英

从 json 转换为 dataframe 到 sql

[英]Converting from json to dataframe to sql

我正在尝试将所有 json 数据保存到 sql 数据库中,我正在使用 python,所以我决定使用 pandas。
JSON部分:

{
"stores": [
    {
        "ID": "123456",
        "name": "Store 1",
        "status": "Active",
        "date": "2019-03-28T15:20:00Z",
        "tagIDs": null,
        "location": {
            "cityID": 2,
            "countryID": 4,
            "geoLocation": {
                "latitude": 1.13121,
                "longitude": 103.4324231
            },
            "postcode": "123456",
            "address": ""
        },
        "new": false
    },
    {
        "ID": "223456",
        "name": "Store 2",
        "status": "Active",
        "date": "2020-03-28T15:20:00Z",
        "tagIDs": [
            12,
            35
        ],
        "location": {
            "cityID": 21,
            "countryID": 5,
            "geoLocation": {
                "latitude": 1.12512,
                "longitude": 103.23342
            },
            "postcode": "223456",
            "address": ""
        },
        "new": true
    }
]

}

我的代码:

response = requests.get(.....)
result = response.text
data = json.loads(result)
df = pd.json_normalize(data["store"])
.....

db_connection = sqlalchemy.create_engine(.....)
df.to_sql(con=db_connection, name="store", if_exists="append" )

Error: _mysql_connector.MySQLInterfaceError: Python type list cannot be converted
我希望 dataframe 看起来像这样:

     ID          tagIDs             date
0   123456        []         2020-04-23T09:32:26Z               
1   223456      [12,35]      2019-05-24T03:21:39Z                 
2   323456     [709,1493]    2019-03-28T15:38:39Z 

到目前为止,我尝试使用不同的数据帧和 json 对象,它们都有效。 所以我发现问题出在 json object。没有“tagIDs”,其他一切正常。
我在想也许如果我将 object 转换为字符串,它可以解析为 sql 但它也不起作用。 如何更改 tagID 以便我可以将所有内容解析为 sql? 还是有另一种更有效的方法来做到这一点?

我认为tagIDs字段是一个列表,您的数据库似乎对此不满意。

不确定这是最好的方法,但您可以尝试将其从列表转换为字符串

df['tagIDs'] = df['tagIDs'].apply(lambda x: str(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM