You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy应用插入图片时触发sqlite3报错:表owners不存在

问题分析与解决

你遇到的问题核心是插入图片时连接的数据库文件和build函数中创建表的不是同一个,导致找不到owners表。以下是具体排查和解决步骤:

1. 统一数据库的绝对路径

不要使用相对路径"my_db.db",因为Kivy在不同运行场景(比如开发环境、打包后)的当前工作目录可能不同,导致两次连接的不是同一个数据库文件。

修改代码,用绝对路径连接数据库:

import os
from kivy.app import App

# 获取应用的固定数据目录(推荐)
db_path = os.path.join(App.get_running_app().user_data_dir, "my_db.db")
# 或者获取当前脚本所在目录的绝对路径
# db_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "my_db.db")

# 在build函数中修改连接
con = sqlite3.connect(db_path)
# ... 表创建代码不变

# 在add_owner函数中同样使用这个路径
con = sqlite3.connect(db_path)
# ... 插入代码不变

2. 检查图片变量b的定义

虽然错误提示是表不存在,但如果b的处理过程中出现异常,可能间接干扰数据库连接逻辑。确认b是正确读取的二进制图片数据,示例代码:

# 读取图片为二进制格式
with open("owner_image.jpg", "rb") as f:
    b = f.read()

3. 验证数据库文件位置

修改后运行应用,通过打印db_path查看数据库实际存储位置,用SQLite浏览器打开该文件,确认owners表是否存在。


内容的提问来源于stack exchange,提问作者Sh2071

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:44:59