Python操作SQLite3如何将字典存入单条记录的单个字段
Python操作SQLite3存储字典到单个字段的实现方案
SQLite没有原生支持Python字典的存储类型,需要先将字典序列化为标准结构化字符串后再存储,JSON是最通用的序列化方案,无需额外依赖,解析成本低。
实现步骤
- 导入Python内置的
json模块 - 存储数据时调用
json.dumps(字典对象)将字典转换为JSON格式字符串,传入SQL执行语句 - 读取数据时调用
json.loads(读取到的JSON字符串)即可还原为原始字典结构
修改后的完整代码
import sqlite3 import json a = "1" b = "2" c = "3" d = "4" user1 = {"id": 100, "name": "Rumpelstiltskin", "dob": "12/12/12", "item": [{"name": "sakthi"}]} # 序列化字典为JSON字符串 ent_value = json.dumps(user1) con = sqlite3.connect(database=r'data.db') cur = con.cursor() # 插入序列化后的字符串 cur.execute("INSERT INTO e_transations (eid,sl,id,datee,ent) VALUES (?,?,?,?,?)", (a,b,c,d,ent_value)) con.commit() # 读取数据还原字典示例 cur.execute("SELECT ent FROM e_transations WHERE eid = ?", (a,)) query_result = cur.fetchone() restored_user = json.loads(query_result[0]) # 验证还原结果 print(restored_user["item"]) # 输出 [{'name': 'sakthi'}] con.close()
补充说明
如果使用SQLite 3.9及以上版本,建表时可将
ent字段类型设置为JSON,SQLite会自动对插入的内容做JSON格式合法性校验,存储和读取逻辑和上述代码完全一致。
不要直接使用str(user1)将字典转为普通字符串存储,这种格式没有统一标准,后续反向解析为字典的难度高,容易出现格式错误。
内容的提问来源于stack exchange,提问作者Sakthi Subramani
相关产品推荐
相关产品推荐

