如何开发一个非程序员可以从JSON格式的数据中提取数据作为关系数据库的环境?



我的问题是存储在maria DB中的json数据被编码为JSON编码(unicode escaped(ascii code(?.部分案文改为"\u????"(。

因此,在从 json 数据进行相位提取时,文本数据应编码为 UTF8。我尝试创建视图表形成的关系数据库,并为非程序员启用导出以使用 phpMyAdmin 获取视图,但问题无法从 json 编码编码到 utf8。SQL 命令如下。

select convert(json_extract(json_col, '$.text') using utf8) as text from json_table;

我通过python(v3.8(+sqlalchemy将包括表情符号在内的json数据存储到maria DB(v10.3.21(中。json data(utf8( 通过 sqlalchemy json 类型隐式编码为 json 编码。

我想教我。

  1. [我希望]我能解决这个编码问题只能边玛丽亚DB/phpMyAdmin创建一个视图解决Unicode转义。
    • 如果 json-data 列的 charcode 更改为latin1用于排除 unicode 转义,字符代码会被 phpMyAdmin 或 Web 浏览器软件自动转换为 utf8?
  2. 我可以通过更改 Python 的代码来对应吗?(没有办法?危险?
  3. 对应内部客户端程序(续集专业版(
  4. 其他

my_json表架构。

CREATE TABLE `my_json` (
`id_` bigint(20) NOT NULL,
`json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL
PRIMARY KEY (`id_`);
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SQLllchemy

class MyJson(Base):
__tablename__ = table_name
__table_args__ = ({"mysql_engine": "InnoDB"})
id = Column('id', BIGINT(unsigned=True), primary_key=True, autoincrement=False)
_json = Column('json', JSON)
engine = create_engine('mysql://%s:%s@%s:%s/%s?charset=utf8mb4'.format(secret), echo=True, convert_unicode=True, connect_args={"charset": 'utf8mb4', "use_unicode": True}) 

谢谢大家。

这个问题得到了解决,只是从mariaDB10.3.xx转移到MySQL5.7。

在mariaDB上,json数据存储为长文本类型,utf8mb4_bin。但是,在MySQL上,json数据存储在json类型中。

MariaDB 表结构无法按照与 mysql 相同的过程更改为 json 类型。所以我现在把我的环境转移到MySQL+Docker。

最新更新