WeChatMsg/wxManager/model/db_model.py

92 lines
2.6 KiB
Python
Raw Normal View History

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)
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:
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