如何在Python中用SQLite修改数据库JSON字段值并保存?
解决SQLite中修改JSON字段并保存的问题
你用SELECT JSON_REPLACE(...)只能查询到修改后的结果,不会实际更新数据库。要实现修改并保存,得用UPDATE语句把处理后的JSON写回原字段。
正确的SQL语句
首先修正WHERE条件(如果表中没有单独的name字段,而是JSON里的Name,得用JSON_EXTRACT来匹配),然后执行UPDATE:
UPDATE "Profiles" SET JsonData = JSON_REPLACE(JsonData, "$.Name", "Other name") WHERE JSON_EXTRACT(JsonData, "$.Name") = "CarlRisinger20409@outlook.com"
如果你的Profiles表确实有单独的name字段(和JSON里的Name对应),那WHERE条件可以保留原来的,但优先推荐用JSON字段匹配更准确。
Python中完整实现代码
import sqlite3 # 连接数据库,替换成你的数据库路径 conn = sqlite3.connect('your_database.db') cursor = conn.cursor() # 执行更新语句,用参数化查询避免SQL注入 update_sql = ''' UPDATE "Profiles" SET JsonData = JSON_REPLACE(JsonData, "$.Name", "Other name") WHERE JSON_EXTRACT(JsonData, "$.Name") = ? ''' cursor.execute(update_sql, ("CarlRisinger20409@outlook.com",)) # 提交事务是关键,不提交修改不会写入数据库 conn.commit() # 关闭连接 cursor.close() conn.close()
核心注意点
- 必须调用
conn.commit():SQLite默认是事务模式,所有修改仅在内存中生效,提交后才会写入磁盘。 - 用参数化查询:既避免SQL注入风险,也能自动处理特殊字符的转义问题。
内容的提问来源于stack exchange,提问作者anhhpvnu
相关产品推荐
相关产品推荐

