我在MySQL表中有一个包含多级JSON对象的JSON列。我可以使用函数JSON_EXTRACT
访问第一级的值,但我找不到如何超越第一级。
这是我的MySQL表:
CREATE TABLE ref_data_table (
`id` INTEGER(11) AUTO_INCREMENT NOT NULL,
`symbol` VARCHAR(12) NOT NULL,
`metadata` JSON NOT NULL,
PRIMARY KEY (`id`)
);
这是我的Python脚本:
import json
import mysql.connector
con = mysql.connector.connect(**config)
cur = con.cursor()
symbol = 'VXX'
metadata = {
'tick_size': 0.01,
'data_sources': {
'provider1': 'p1',
'provider2': 'p2',
'provider3': 'p3'
},
'currency': 'USD'
}
sql = \
"""
INSERT INTO ref_data_table (symbol, metadata)
VALUES ('%s', %s);
"""
cur.execute(sql, (symbol, json.dumps(metadata)))
con.commit()
数据已正确插入MySQL表中,MySQL中的以下语句可以正常工作:
SELECT symbol, JSON_EXTRACT(metadata, '$.data_sources')
FROM ref_data_table
WHERE symbol = 'VXX';
如何在'data_sources'中请求'provider3'的值?
非常感谢!
答案 0 :(得分:2)
试试这个:
'$.data_sources.provider3'
SELECT symbol, JSON_EXTRACT(metadata, '$.data_sources.provider3)
FROM ref_data_table
WHERE symbol = 'VXX';
答案 1 :(得分:0)
MySql中的JSON_EXTRACT方法支持,' $'引用JSON根,而句点引用嵌套级别。在这个JSON示例中
{
"key": {
"value": "nested_value"
}
}
您可以使用JSON_EXTRACT(json_field,' $ .key.value')来获取" nested_value"