mysql 有一列属性是 TEXT 的都是 json 字符串,读取查询应该如何操作?

2019-02-24 13:22:58 +08:00
 qile1

如题,用 python 处理下数据库内容,发现数据都以 json 字符串保存在一列里面。 想用 flask 把数据显示出来,有啥好办法没?必须得读取后用 json dump 处理,我看 mysql5.7 支持 json 直接处理,这里数据项太多,查询不知道速度然后!

数据列是这样的
 `id`, `create_time`, `json_str`, `time`, `type`, `typeshow`, `uid`
 
 json 数据保存在 json_str 这列
 
 

json_str 这列内容如下

{"address":"内蒙古自治区包头市农村商业银行(狮西分理处)","bianhao":"","changguiid":0,"lat":"23.177047526041665","lishiid":3,"lon":"112.96525254991319","pi3LiangEntity":{"biaozhunzhi":"","ceshitiaojian":1,"ceshitiaojianShow":"压","chongdia3nzhuangtai":0,"chongdianzhuangtaiShow":"充","dianchi3biaozhun":"","dianchileixing":"普通","dianchi3pingpai":"","hegedianyazhi":"12.60","lingbujianhaop":"105","pi3LiangItemEntityList":[{"beizhu":"","dianya":"12.8","dianya2":"","erweima":"","hege1":"","hege2":"","jieguo":"","piliangid":4,"piliangitemid":9,"qicheerweima":"","qicheshoudongma":"","shoudongma":"","soc":0,"soh":0,"time":1546759767792}],"piliangid":4,"riqima":"","zifu":""},"piliangid":4,"time":1546759757201,"timeShow":"2019-1-6 15:29:17","type":0,"uid":1,"xiTongEntity":{"beizhu":"","dianchima":"","dianya1":"","dianya2":"","dianya3":"","dianya4":"","erweidianchima":"","erweiqichema":"","gaodi1":"","gaodi2":"","gaodi3":"","gaodi4":"","qichema":"","time":0,"xitongid":0},"xitongid":0}


7181 次点击
所在节点    MySQL
8 条回复
aliipay
2019-02-24 13:45:18 +08:00
病句太多,不知道问题是什么,无法回答
Wisho
2019-02-24 14:13:53 +08:00
如果经常要对 json 里的某个字段进行查询,建议单独把这一列抽出来成为一张独立的表......或者灌到 es 里做索引。
qile1
2019-02-24 14:18:03 +08:00
@aliipay 谢谢回复,我意思是 mysql 数据库里面的数据是以 text 格式保存到表里面的,用 python 语言连接数据库后该如何查询这些数据。

数据库里面某行的“ json_str ” 这列是上面的内容
leoleoasd
2019-02-24 14:33:35 +08:00
你已经说了 读取出字符串后 dump 处理
已经是 TEXT 格式的话 没法用 mysql 提供的 json 吧
iyaozhen
2019-02-24 14:43:22 +08:00
5.7 后就支持 json 查询,但是无法索引。
qile1
2019-02-24 15:09:36 +08:00
@leoleoasd 那我把数据类型修改为 json,是不是可以直接 mysql 运行查询 json 数据

````
SON_CONTAINS(json_doc,var,[path])

查询 json 文档是否在指定 path 包含指定的数据,包含则返回 1,否则返回 0.如果有参数为 null 或者 path 不存在则返回 null
````
leoleoasd
2019-02-24 15:26:33 +08:00
@qile1 #6 理论可以 我没用过
TEXT 格式是肯定没法用这个 api 的
qile1
2019-02-24 20:02:02 +08:00
@leoleoasd 那如果是 json 格式,我直接用 sql 语句 select json_str from jsonTable
返回的语句是否是 json 的文本内容?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/538150

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX