WeChatMsg/wxManager/model/db_model.py

92 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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':
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
# 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