feat(database): 支持使用 SQLite 数据库

- 在 `.env.example` 文件中添加了 `DATABASE_TYPE` 变量,用于指定数据库类型,默认使用 mysql
 - 添加了 `DATABASE_TYPE` 和 `SQLITE_DATABASE` 配置项
 - 在使用 mysql 时,对其他 MySQL 配置进行验证
 - 添加 `aiosqlite` 依赖
This commit is contained in:
happy game
2025-05-07 22:19:46 +08:00
parent 1ff494416b
commit 12f6665519
4 changed files with 35 additions and 14 deletions
+16 -6
View File
@@ -5,7 +5,7 @@ import datetime
import json
from typing import List, Any, Dict, Type
from pydantic import ValidationError
from pydantic import ValidationError, validator
from pydantic_settings import BaseSettings
from sqlalchemy import insert, update, select
@@ -15,13 +15,23 @@ from app.log.logger import Logger
class Settings(BaseSettings):
# 数据库配置
MYSQL_HOST: str
MYSQL_PORT: int
MYSQL_USER: str
MYSQL_PASSWORD: str
MYSQL_DATABASE: str
DATABASE_TYPE: str = "mysql" # sqlite 或 mysql
SQLITE_DATABASE: str = "default_db"
MYSQL_HOST: str = ""
MYSQL_PORT: int = 3306
MYSQL_USER: str = ""
MYSQL_PASSWORD: str = ""
MYSQL_DATABASE: str = ""
MYSQL_SOCKET: str = ""
# 验证 MySQL 配置
@validator('MYSQL_HOST', 'MYSQL_PORT', 'MYSQL_USER', 'MYSQL_PASSWORD', 'MYSQL_DATABASE')
def validate_mysql_config(cls, v, values):
if values.get('DATABASE_TYPE') == 'mysql':
if v is None or v == "":
raise ValueError(f"MySQL configuration is required when DATABASE_TYPE is 'mysql'")
return v
# API相关配置
API_KEYS: List[str]
ALLOWED_TOKENS: List[str]