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

2020-07-05 23:41:08 +08:00
 qazwsxkevin

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

2786 次点击
所在节点    Python
10 条回复
rogwan
2020-07-05 23:46:05 +08:00
为什么不直接存 json ?新版 MySQL 已经支持了。
ClericPy
2020-07-05 23:51:02 +08:00
虽说 mysql 是已经支持了 JSON... 但是都这样了何必还纠结关系型不放呢... 关系型数据库的核心在关系啊.....
qazwsxkevin
2020-07-06 00:04:15 +08:00
哈哈,环境只有 mysql 能用,情况也是不需要纠结里面的关系,谁要谁取出来拿去用这样而已...
alcarl
2020-07-06 00:20:37 +08:00
mysql 8.0 好像支持 cte 了,嵌套用 cte 递归 sql 可以解决,就是不知道效率如何。我都是用 sqlserver 的,逃。。。。
lithbitren
2020-07-06 00:26:17 +08:00
用递归和循环可以实现嵌套关系查询,相当于所有变量和值的关系存进堆空间的感觉,即便是不能直接循环的 sqlite,也可以用 with 来解数独,传统 sql 表达能力还是很强的。
Vegetable
2020-07-06 00:45:17 +08:00
这么做主要是难以根据内容检索,没有太多别的问题。
同时 JSON 序列化算是一个重活,性能敏感的话尽量避免。MYSQL 高版本支持 JSON,只是 ORM 几乎都不支持。
vipppppp
2020-07-06 09:28:45 +08:00
关键字段单独存,不重要字段可以直接存 json string,取出来反序列化就好,前提是字段不要有搜索的需求
tikazyq
2020-07-06 13:30:09 +08:00
既然都 json 了,为啥不 mongodb ?
sujin190
2020-07-07 22:35:09 +08:00
虽然读写起来是少了很多事,但是对于大多数业务来说,这也代表着逻辑不清,定义不明,结构不合理,缺少足够思考和理解,这不但脑懒还手懒,从维护来看真的是作死,如果经过了细致思考梳理设计,那么就应该每个字段每个数据定义逻辑都应该清清楚楚明明白白,既然如此那又犯这懒何必,借助良好的 ORM,使用上还更简单,关于性能不性能的,纯属想太多
azzwacb9001
2020-07-08 12:08:14 +08:00
感觉不如直接上 mongodb

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

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

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

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

© 2021 V2EX