V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
qile1
V2EX  ›  MySQL

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

  •  
  •   qile1 · 2019-02-24 13:22:58 +08:00 · 7178 次点击
    这是一个创建于 2097 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    数据库里面某行的“ json_str ” 这列是上面的内容
    leoleoasd
        4
    leoleoasd  
       2019-02-24 14:33:35 +08:00
    你已经说了 读取出字符串后 dump 处理
    已经是 TEXT 格式的话 没法用 mysql 提供的 json 吧
    iyaozhen
        5
    iyaozhen  
       2019-02-24 14:43:22 +08:00 via Android
    5.7 后就支持 json 查询,但是无法索引。
    qile1
        6
    qile1  
    OP
       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
        7
    leoleoasd  
       2019-02-24 15:26:33 +08:00
    @qile1 #6 理论可以 我没用过
    TEXT 格式是肯定没法用这个 api 的
    qile1
        8
    qile1  
    OP
       2019-02-24 20:02:02 +08:00
    @leoleoasd 那如果是 json 格式,我直接用 sql 语句 select json_str from jsonTable
    返回的语句是否是 json 的文本内容?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5435 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:22 · PVG 11:22 · LAX 19:22 · JFK 22:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.