64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
|
from contextlib import contextmanager
|
||
|
import sqlite3
|
||
|
|
||
|
class DatabaseHandle:
|
||
|
def __init__(self, db_path = "data.db"):
|
||
|
self.db_path = db_path
|
||
|
self._init_db()
|
||
|
|
||
|
def _init_db(self):
|
||
|
"""创建表"""
|
||
|
with self._get_connection() as conn:
|
||
|
#创建角色表
|
||
|
conn.execute('''
|
||
|
CREATE TABLE IF NOT EXISTS characters
|
||
|
(id INTEGER PRIMARY KEY,
|
||
|
name TEXT not NULL,
|
||
|
age INTEGER,
|
||
|
personality TEXT,
|
||
|
profession TEXT,
|
||
|
characterBackgrount TEXT,
|
||
|
chat_style TEXT
|
||
|
)
|
||
|
''')
|
||
|
#创建聊天记录表
|
||
|
conn.execute('''
|
||
|
CREATE TABLE IF NOT EXISTS chat_records
|
||
|
(id INTEGER PRIMARY KEY,
|
||
|
character_ids TEXT not NULL,
|
||
|
chat TEXT,
|
||
|
time DATETIME DEFAULT CURRENT_TIMESTAMP
|
||
|
)
|
||
|
''')
|
||
|
|
||
|
@contextmanager
|
||
|
def _get_connection(self):
|
||
|
conn = sqlite3.connect(self.db_path)
|
||
|
try:
|
||
|
yield conn
|
||
|
conn.commit()
|
||
|
except Exception:
|
||
|
conn.rollback()
|
||
|
raise
|
||
|
finally:
|
||
|
conn.close()
|
||
|
|
||
|
def add_character(self, data:dict):
|
||
|
"""添加角色数据"""
|
||
|
pass
|
||
|
|
||
|
# def add_employee(self, data: dict):
|
||
|
# """插入员工数据"""
|
||
|
# with self._get_connection() as conn:
|
||
|
# cursor = conn.cursor()
|
||
|
# cursor.execute('''
|
||
|
# INSERT INTO employees (
|
||
|
# name, age, personality, profession, background,
|
||
|
# conversation_scene, language_style
|
||
|
# ) VALUES (?, ?, ?, ?, ?, ?, ?)
|
||
|
# ''', (
|
||
|
# data["姓名"], data["年龄"], data["性格"],
|
||
|
# data["职业"], data["背景"],
|
||
|
# data["对话场景"], data["语言风格"]
|
||
|
# ))
|
||
|
# return cursor.lastrowid # 返回插入ID
|