查询存储在MySQL中的多级JSON对象 [英] Query a multi-level JSON object stored in MySQL

查看:144
本文介绍了查询存储在MySQL中的多级JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在MySQL表中有一个JSON列,其中包含一个多级JSON对象.我可以使用函数JSON_EXTRACT访问第一级的值,但找不到如何遍历第一级的值.

I have a JSON column in a MySQL table that contains a multi-level JSON object. I can access the values at the first level using the function JSON_EXTRACT but I can't find how to go over the first level.

这是我的MySQL表:

Here's my MySQL table:

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脚本:

Here's my Python script:

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中的以下语句有效:

The data is properly inserted into the MySQL table and the following statement in MySQL works:

SELECT symbol, JSON_EXTRACT(metadata, '$.data_sources') 
FROM ref_data_table
WHERE symbol = 'VXX';

如何在'data_sources'中请求'provider3'的值?

How can I request the value of 'provider3' in 'data_sources'?

非常感谢!

推荐答案

尝试一下:

'$.data_sources.provider3'

SELECT symbol, JSON_EXTRACT(metadata, '$.data_sources.provider3) 
FROM ref_data_table
WHERE symbol = 'VXX';

这篇关于查询存储在MySQL中的多级JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆