2025-03-28 21:29:18 +08:00
|
|
|
|
#!/usr/bin/env python
|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
@Time : 2024/12/5 22:47
|
|
|
|
|
@Author : SiYuan
|
|
|
|
|
@Email : 863909694@qq.com
|
|
|
|
|
@File : MemoTrace-db_model.py
|
|
|
|
|
@Description :
|
|
|
|
|
"""
|
|
|
|
|
import os
|
|
|
|
|
import sqlite3
|
|
|
|
|
import traceback
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DataBaseBase:
|
|
|
|
|
def __init__(self, db_file_name, is_series=False):
|
|
|
|
|
self.DB = None
|
|
|
|
|
self.cursor = None
|
|
|
|
|
self.open_flag = False
|
|
|
|
|
self.db_file_name = db_file_name
|
|
|
|
|
self.is_series = is_series # 是否是一系列数据库,例如MSG0、MSG1、MSG2······
|
|
|
|
|
self.db_dir = ''
|
|
|
|
|
|
|
|
|
|
def init_database(self, db_dir=''):
|
|
|
|
|
self.db_dir = db_dir
|
|
|
|
|
db_path = os.path.join(db_dir, self.db_file_name)
|
2025-04-02 12:35:17 +08:00
|
|
|
|
if not os.path.exists(db_path) and self.db_file_name != 'Audio2Text.db':
|
2025-03-28 21:29:18 +08:00
|
|
|
|
return False
|
|
|
|
|
db_file_name = self.db_file_name
|
|
|
|
|
self.db_file_name = []
|
|
|
|
|
if self.is_series:
|
|
|
|
|
self.DB = []
|
|
|
|
|
self.cursor = []
|
|
|
|
|
for i in range(100):
|
|
|
|
|
new_file_name = db_file_name.replace('0', f'{i}')
|
|
|
|
|
db_path = os.path.join(db_dir, new_file_name)
|
|
|
|
|
if os.path.exists(db_path):
|
|
|
|
|
self.db_file_name.append(os.path.basename(new_file_name))
|
|
|
|
|
# print('初始化数据库:', db_path)
|
|
|
|
|
DB = sqlite3.connect(db_path, check_same_thread=False)
|
|
|
|
|
cursor = DB.cursor()
|
|
|
|
|
self.DB.append(DB)
|
|
|
|
|
self.cursor.append(cursor)
|
|
|
|
|
self.open_flag = True
|
|
|
|
|
else:
|
2025-04-02 12:35:17 +08:00
|
|
|
|
self.DB = sqlite3.connect(db_path, check_same_thread=False)
|
|
|
|
|
# '''创建游标'''
|
|
|
|
|
self.cursor = self.DB.cursor()
|
|
|
|
|
self.open_flag = True
|
2025-03-28 21:29:18 +08:00
|
|
|
|
# print('初始化数据库完成:', db_path)
|
|
|
|
|
self.self_init()
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
def self_init(self):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def commit(self):
|
|
|
|
|
if self.is_series:
|
|
|
|
|
for db in self.DB:
|
|
|
|
|
db.commit()
|
|
|
|
|
else:
|
|
|
|
|
self.DB.commit()
|
|
|
|
|
|
|
|
|
|
def execute(self, sql, args):
|
|
|
|
|
self.cursor.execute(sql, args)
|
|
|
|
|
|
|
|
|
|
def close(self):
|
|
|
|
|
if self.open_flag:
|
|
|
|
|
try:
|
|
|
|
|
self.open_flag = False
|
|
|
|
|
if self.is_series:
|
|
|
|
|
for db in self.DB:
|
|
|
|
|
db.close()
|
|
|
|
|
else:
|
|
|
|
|
if self.DB:
|
|
|
|
|
self.DB.close()
|
|
|
|
|
except:
|
|
|
|
|
print(traceback.format_exc())
|
|
|
|
|
finally:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def merge(self, db_path):
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
def __del__(self):
|
|
|
|
|
self.close()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
pass
|