You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将嵌套列表/字典以字符串形式插入MySQL数据库

嘿,这个问题我太熟了!要把Python里的嵌套列表/字典存成字符串放进MySQL,核心就是把结构化数据序列化成标准字符串格式,最实用的就是JSON——毕竟JSON和Python的列表、字典几乎是无缝对接的,而且MySQL对JSON的支持也很友好。

先纠正下你原来普通插入的小问题哈:你写的sql = 'INSERT INTO table VALUES ('name', 'likes')'是不对的,这里得用占位符%s来绑定变量,不然会把字符串'name'和'likes'直接插进去,而不是你list_data里的实际值。正确的普通插入写法应该是这样:

list_data = ['Kate', 'apple']
sql = 'INSERT INTO your_table (name, likes) VALUES (%s, %s)'  # 指定字段更稳妥
cursor.execute(sql, list_data)
conn.commit()  # 别忘了提交事务!

好了,回到嵌套数据的场景,分两种情况给你演示:

1. 嵌套列表的情况

比如list_data = ['Kate', ['apple', 'orange', 'banana']],我们用json.dumps()把嵌套的列表转成JSON字符串就行:

import json

original_data = ['Kate', ['apple', 'orange', 'banana']]
# 把第二个元素(嵌套列表)序列化成JSON字符串
processed_data = [original_data[0], json.dumps(original_data[1])]

sql = 'INSERT INTO your_table (name, likes) VALUES (%s, %s)'
cursor.execute(sql, processed_data)
conn.commit()

2. 嵌套字典的情况

处理逻辑和列表完全一样,json.dumps()同样能搞定字典:

original_data = ['Kate', {'food': 'apple', 'sports': 'running'}]
processed_data = [original_data[0], json.dumps(original_data[1])]

cursor.execute(sql, processed_data)
conn.commit()

额外小贴士:

  • 如果你的MySQL版本是5.7及以上,建议把存储嵌套数据的字段类型设为JSON(而不是VARCHAR),这样MySQL会优化JSON数据的存储,还能直接用MySQL的JSON函数做查询(比如直接查喜欢apple的用户,不用全表扫描),插入方式和上面完全一样。
  • 如果数据里有中文,记得给json.dumps()加个参数:json.dumps(..., ensure_ascii=False),不然中文会变成Unicode转义字符,存进去看着别扭。
  • 从数据库读回来的时候,用json.loads()就能把字符串还原成Python的列表/字典:
    cursor.execute('SELECT name, likes FROM your_table WHERE name = %s', ('Kate',))
    name, likes_str = cursor.fetchone()
    likes = json.loads(likes_str)  # 还原成原有的列表/字典
    

内容的提问来源于stack exchange,提问作者Bruce Feng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:12:37