如何用Python的sqlite3修改Chrome历史?附代码报错解决
解决Python sqlite3修改Chrome历史记录的问题
错误原因及修正
你碰到的TypeError是因为executemany()要求传入两个参数:SQL语句和参数序列,但你这里不需要批量执行SQL,改用execute()即可。同时你的SQL语句存在语法错误,SQL中的字符串必须用单/双引号包裹,修正后如下:
修正后的代码
import sqlite3 # 替换为你的Chrome历史数据库路径,务必先关闭所有Chrome进程 history_path = "你的Chrome历史文件路径" conn = sqlite3.connect(history_path) c = conn.cursor() # 修正SQL语法:字符串加引号,使用execute而非executemany c.execute("UPDATE urls SET url = REPLACE(url, 'foo', 'foo-bar') WHERE url LIKE '%foo%';") # 提交修改,这一步必须执行,否则修改不会保存到数据库 conn.commit() conn.close()
关键注意事项
- 关闭Chrome进程:Chrome运行时会锁定History数据库,必须关闭所有Chrome窗口(包括后台隐藏的Chrome进程),否则会出现数据库无法打开的错误。
- 路径替换:根据你的操作系统替换
history_path:- Windows:
C:\\Users\\你的用户名\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\History - Mac:
~/Library/Application Support/Google/Chrome/Default/History - Linux:
~/.config/google-chrome/Default/History
- Windows:
- 提交修改:执行
UPDATE语句后必须调用conn.commit(),否则所有修改只会停留在内存中,不会写入数据库。
内容的提问来源于stack exchange,提问作者Someoneyouhaventmet
相关产品推荐
相关产品推荐

