如何将文件路径存入SQLite3数据库且避免sqlite3.InterfaceError?
解决sqlite3.InterfaceError:存储WindowsPath路径到SQLite数据库失败的问题
错误原因
你碰到的sqlite3.InterfaceError是因为SQLite不认识WindowsPath对象——它只支持字符串、数字这类基础数据类型,直接传路径对象会导致参数绑定失败。
修复方案
把WindowsPath对象转换成字符串就行,有两种简单方式:
- 用
str()直接转成Windows原生格式的路径字符串 - 用
as_posix()转成Unix风格的斜杠路径(适合跨平台读取的场景)
修改后的完整代码
import sqlite3 from pathlib import WindowsPath # 创建数据库连接 conn = sqlite3.connect('file_path.db') cursor = conn.cursor() # 创建表 cursor.execute(''' CREATE TABLE IF NOT EXISTS paths ( id INTEGER PRIMARY KEY, file_path TEXT NOT NULL ) ''') # 读取输入路径并处理 input_path = input('enter file path: ') path = WindowsPath(input_path.replace('"', '')) # 插入数据时将路径转为字符串 # 方式1:转成Windows原生路径 cursor.execute('INSERT INTO paths (id, file_path) VALUES (1, ?)', (str(path),)) # 方式2(可选):转成跨平台的Unix风格路径 # cursor.execute('INSERT INTO paths (id, file_path) VALUES (1, ?)', (path.as_posix(),)) conn.commit() conn.close() # 记得关闭连接,避免资源泄漏
补充说明
- 转换后的字符串和数据库表中
file_path字段的TEXT类型完全匹配,不会再触发类型错误 - 如果之后需要从数据库读取路径并重新变成
WindowsPath对象,直接用WindowsPath(读取到的字符串)即可还原
内容的提问来源于stack exchange,提问作者Andy Tong
相关产品推荐
相关产品推荐

