V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
qazwsxkevin
V2EX  ›  Python

突发奇想, Python 与 mysql 的交互过程中,把 dict 类型保存在表中的一个字段里?

  •  
  •   qazwsxkevin · 2020-07-05 23:41:08 +08:00 · 2542 次点击
    这是一个创建于 1361 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前提是假设了这个字典的 key 和 vlaue,包括嵌套内再 N 层嵌套的,都是 String 类型。。。
    根据字典 k,v,sqlalchemy 做自动建临时表,效率开销会非常大,而且嵌套再嵌套 N 层的,建表存储很麻烦。。。
    整个字典转成 String 存进 TEXT ? 取出来再转成 dict,量多的话,干起来会不会不利索? 想存进去就是一个字段内容,
    取出来轻轻松松,不用太啰嗦处理,就是一个 dict 这样子?
    是否有轻轻松松很好的方式?

    10 条回复    2020-07-08 12:08:14 +08:00
    rogwan
        1
    rogwan  
       2020-07-05 23:46:05 +08:00 via iPhone
    为什么不直接存 json ?新版 MySQL 已经支持了。
    ClericPy
        2
    ClericPy  
       2020-07-05 23:51:02 +08:00
    虽说 mysql 是已经支持了 JSON... 但是都这样了何必还纠结关系型不放呢... 关系型数据库的核心在关系啊.....
    qazwsxkevin
        3
    qazwsxkevin  
    OP
       2020-07-06 00:04:15 +08:00
    哈哈,环境只有 mysql 能用,情况也是不需要纠结里面的关系,谁要谁取出来拿去用这样而已...
    alcarl
        4
    alcarl  
       2020-07-06 00:20:37 +08:00 via Android
    mysql 8.0 好像支持 cte 了,嵌套用 cte 递归 sql 可以解决,就是不知道效率如何。我都是用 sqlserver 的,逃。。。。
    lithbitren
        5
    lithbitren  
       2020-07-06 00:26:17 +08:00
    用递归和循环可以实现嵌套关系查询,相当于所有变量和值的关系存进堆空间的感觉,即便是不能直接循环的 sqlite,也可以用 with 来解数独,传统 sql 表达能力还是很强的。
    Vegetable
        6
    Vegetable  
       2020-07-06 00:45:17 +08:00
    这么做主要是难以根据内容检索,没有太多别的问题。
    同时 JSON 序列化算是一个重活,性能敏感的话尽量避免。MYSQL 高版本支持 JSON,只是 ORM 几乎都不支持。
    vipppppp
        7
    vipppppp  
       2020-07-06 09:28:45 +08:00
    关键字段单独存,不重要字段可以直接存 json string,取出来反序列化就好,前提是字段不要有搜索的需求
    tikazyq
        8
    tikazyq  
       2020-07-06 13:30:09 +08:00
    既然都 json 了,为啥不 mongodb ?
    sujin190
        9
    sujin190  
       2020-07-07 22:35:09 +08:00
    虽然读写起来是少了很多事,但是对于大多数业务来说,这也代表着逻辑不清,定义不明,结构不合理,缺少足够思考和理解,这不但脑懒还手懒,从维护来看真的是作死,如果经过了细致思考梳理设计,那么就应该每个字段每个数据定义逻辑都应该清清楚楚明明白白,既然如此那又犯这懒何必,借助良好的 ORM,使用上还更简单,关于性能不性能的,纯属想太多
    azzwacb9001
        10
    azzwacb9001  
       2020-07-08 12:08:14 +08:00
    感觉不如直接上 mongodb
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2698 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:36 · PVG 23:36 · LAX 08:36 · JFK 11:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.