在 Python 中从 SQLite DB 捕获“错误”的最佳方法是什么,因为它们在 Python 中不被视为异常。
我尝试 INSERT OR IGNORE 语句(其中数据库中不存在列)后的错误输出如下
('table X has no column named Y,)
Run Code Online (Sandbox Code Playgroud)
下面的语句用于执行查询
cursor.execute("INSERT...")
Run Code Online (Sandbox Code Playgroud)
我想到的方法不起作用,因为当游标/查询出现错误时不会返回行计数
if cursor.rowcount != 1:
print("##########Error write_DB\n")
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来捕捉类似的错误吗?
背景:我正在插入多行,并且我想在日志文件中突出显示插入查询是否成功。
谢谢你的建议
您可以遵循EAFP 方法,使用常规INSERT(没有“忽略”部分)并捕获可以记录的数据库错误:
try:
cursor.execute("INSERT INTO ...", params)
except sqlite3.Error as err:
logger.error(err.message)
Run Code Online (Sandbox Code Playgroud)