[英]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.