mirror of
https://github.com/LC044/WeChatMsg
synced 2025-04-11 17:28:01 +08:00
92 lines
2.6 KiB
Python
92 lines
2.6 KiB
Python
#!/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
|