当前位置:首页>python>Python面向对象+SQLite实战|AI数据集管理系统完整教程

Python面向对象+SQLite实战|AI数据集管理系统完整教程

  • 2026-10-11 06:12:32
Python面向对象+SQLite实战|AI数据集管理系统完整教程

Python面向对象+SQLite实战|AI数据集管理系统完整教程

Python 面向对象 + SQLite 实战|AI 数据集管理系统完整教程,毕设 / 竞赛直接复用

✨智能专业同学必看底层开发干货!

做图像识别、文本分类 AI 项目时,本地训练样本、日志杂乱难管理?

今天结合课堂全套知识点,用面向对象封装 + SQLite 轻量数据库搭建一套可直接落地的 AI 样本管理工具,代码完整可运行,竞赛、毕业设计拿来就能用!

unsetunset一、为什么一定要学这套组合?unsetunset

很多同学做 AI 项目只会写模型推理,忽略本地数据持久化:

  1. 纯文件存储读写慢、无法快速筛选同标签样本;

  2. MySQL 需要搭建服务,笔记本离线实训不方便;

  3. 代码零散杂乱,增删数据逻辑重复,后期维护难。

SQLite 核心优势)

  • Python 内置模块,无需额外安装,单文件数据库,开箱即用;

  • 轻量无独立服务器,适配笔记本、嵌入式智能设备离线开发;

  • 支持标准 SQL 语法,主键、非空、唯一约束,规范管理训练数据。

面向对象开发优势

  • 封装数据库底层逻辑,隐藏连接、游标、关闭等重复操作;

  • 代码高复用,新增查询、修改功能只需要扩展类方法;

  • 模块化结构,符合大型 AI 项目、科创作品开发规范。

💡思政小科普:SQLite 这类轻量嵌入式数据库大量应用国产智能终端、边缘 AI 设备,掌握底层存储开发,是打造自主可控智能系统的基础能力。

unsetunset二、项目需求:AI 图像训练样本管理系统unsetunset

贴合智能专业实训、竞赛真实场景,实现完整数据 CRUD 功能:

  1. 自动创建样本数据表,自带主键、唯一、非空约束;

  2. 单条 / 批量导入训练图片路径、标注标签、采集时间;

  3. 按标签筛选样本、修改标注、删除无效数据;

  4. 自动管理数据库连接、事务回滚,杜绝数据丢失;

  5. 全部逻辑封装为工具类,导入 AI 项目直接调用。

unsetunset三、完整可运行源码unsetunset

import sqlite3

# AI数据库操作工具类(面向对象封装核心)
classAIDataBase:
# 类属性:全局数据库文件名
    DB_NAME = "ai_sample.db"

# 构造特殊方法:实例化自动建表
def__init__(self):
        self.create_table()

# 私有封装方法:隐藏数据库连接逻辑,外部不可调用
def__get_conn(self):
        conn = sqlite3.connect(AIDataBase.DB_NAME)
        conn.row_factory = sqlite3.Row
return conn

# 实例方法:创建AI样本数据表(建表+字段约束)
defcreate_table(self):
        conn = self.__get_conn()
        cursor = conn.cursor()
        create_sql = '''
        CREATE TABLE IF NOT EXISTS ai_sample (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            img_path TEXT NOT NULL UNIQUE,
            label TEXT NOT NULL,
            create_time TEXT NOT NULL
        )
        '''

        cursor.execute(create_sql)
        conn.commit()
        cursor.close()
        conn.close()

# 新增单条样本(INSERT增操作)
defadd_sample(self, img_path, label, create_time):
        conn = self.__get_conn()
        cursor = conn.cursor()
        insert_sql = "INSERT INTO ai_sample(img_path, label, create_time) VALUES (?, ?, ?)"
try:
            cursor.execute(insert_sql, (img_path, label, create_time))
            conn.commit()
            print(" 样本新增成功")
except Exception as e:
            conn.rollback()
            print(f" 新增失败:{e}")
        cursor.close()
        conn.close()

# 批量导入样本(executemany批量操作)
defbatch_add_sample(self, data_list):
        conn = self.__get_conn()
        cursor = conn.cursor()
        insert_sql = "INSERT INTO ai_sample(img_path, label, create_time) VALUES (?, ?, ?)"
try:
            cursor.executemany(insert_sql, data_list)
            conn.commit()
            print(f" 批量导入{cursor.rowcount}条训练样本")
except Exception as e:
            conn.rollback()
            print(f" 批量导入失败:{e}")
        cursor.close()
        conn.close()

# 按标签查询样本(SELECT条件查询)
defquery_by_label(self, target_label):
        conn = self.__get_conn()
        cursor = conn.cursor()
        query_sql = "SELECT * FROM ai_sample WHERE label = ?"
        cursor.execute(query_sql, (target_label,))
        result = cursor.fetchall()
        cursor.close()
        conn.close()
return result

# 修改样本标签(UPDATE改操作)
defupdate_label(self, img_path, new_label):
        conn = self.__get_conn()
        cursor = conn.cursor()
        update_sql = "UPDATE ai_sample SET label = ? WHERE img_path = ?"
        cursor.execute(update_sql, (new_label, img_path))
        conn.commit()
        cursor.close()
        conn.close()

# 删除无效样本(DELETE删操作)
defdel_sample(self, img_path):
        conn = self.__get_conn()
        cursor = conn.cursor()
        del_sql = "DELETE FROM ai_sample WHERE img_path = ?"
        cursor.execute(del_sql, (img_path,))
        conn.commit()
        cursor.close()
        conn.close()

# 类方法:查看数据库文件名称
    @classmethod
defshow_db_name(cls):
        print(f" 当前数据库文件:{cls.DB_NAME}")


# 主程序调用演示
if __name__ == "__main__":
# 调用类方法
    AIDataBase.show_db_name()
# 实例化数据库对象,自动创建数据表
    db = AIDataBase()

# 单条添加训练样本
    db.add_sample("train/cat_001.jpg", "猫", "2026-08-06")
    db.add_sample("train/dog_001.jpg", "狗", "2026-08-06")

# 批量导入多条样本
    batch_data = [
        ("train/cat_002.jpg", "猫", "2026-08-06"),
        ("train/dog_002.jpg", "狗", "2026-08-06"),
        ("train/bird_001.jpg", "鸟", "2026-08-06")
    ]
    db.batch_add_sample(batch_data)

# 查询所有猫类样本
    cat_samples = db.query_by_label("猫")
    print("n===== 猫类训练样本 =====")
for item in cat_samples:
        print(f"图片路径:{item['img_path']},标注标签:{item['label']}")

# 修改样本标签、删除无效数据
    db.update_label("train/bird_001.jpg", "鸟类")
    db.del_sample("train/dog_002.jpg")

unsetunset四、代码对标课堂核心知识点unsetunset

🔹 Python 面向对象知识点全覆盖

  1. 类与实例:AIDataBase为模板类,db = AIDataBase()创建操作对象;

  2. 类属性 / 类方法:DB_NAME全局常量、@classmethod查看数据库名;

  3. 特殊构造方法**__init__**:创建对象自动生成数据表,简化初始化;

  4. 封装特性:__get_conn()私有方法,隐藏数据库连接底层逻辑,避免外部误操作;

  5. 实例方法:所有增删改查功能封装为实例方法,逻辑清晰易扩展。

🔹 SQLite 数据库核心知识点全覆盖

  1. 5 大数据类型、完整字段约束:PRIMARY KEY主键自增、NOT NULL非空、UNIQUE路径唯一;

  2. Python 操作数据库标准 6 步流程:连接→创建游标→执行 SQL→事务提交→关闭游标→关闭连接;

  3. Cursor 全套方法:execute单条执行、executemany批量、fetchall全量读取;

  4. 完整 CRUD 语句:建表 CREATE、新增 INSERT、查询 SELECT、修改 UPDATE、删除 DELETE;

  5. 事务安全机制:正常提交 commit,异常自动回滚 rollback,规避数据丢失;

  6. ?占位符防 SQL 注入,符合工业开发安全规范。

unsetunset五、专创融合|直接用于竞赛 / 毕设unsetunset

这套工具不是单纯课堂习题,是可落地的科创项目组件:

  1. 图像识别竞赛:管理数据集图片路径、分类标签,快速筛选同类样本用于模型训练;

  2. 毕业设计系统:拓展训练日志表,记录模型损失、准确率,完整存储实验数据;

  3. 嵌入式 AI 项目:SQLite 轻量化特性适配边缘设备离线存储,无需搭建数据库服务。

课堂拓展小任务(可直接当课后作业)

  1. 新增方法:按时间区间筛选训练样本;

  2. 拓展子类:使用继承,新建ModelLogDB管理模型训练日志;

  3. 增加清空全表、统计各类样本数量功能。

unsetunset六、课程思政小总结unsetunset

  1. 工匠精神:代码规范、强制释放数据库资源、事务异常回滚,养成严谨开发习惯,杜绝数据丢失、内存泄漏;

  2. 数据伦理:通过唯一、非空约束规范 AI 训练数据,保护标注劳动成果,树立数据安全意识;

  3. 信创发展:轻量 SQLite 广泛适配国产智能硬件,学好底层存储开发,夯实自主可控 AI 技术根基。

unsetunset

#标签 #Python #人工智能 #Python 面向对象 #SQLite #AI 毕设 #计算机专业实训 #科创竞赛

最新文章

随机文章