VWED_server/config/database_config.py
2025-04-30 16:57:46 +08:00

84 lines
2.4 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 -*-
"""
数据库配置模块
仅包含数据库连接的配置信息
"""
from sqlalchemy.ext.declarative import declarative_base
from config.settings import settings
# 创建Model基类
Base = declarative_base()
# 数据库连接配置
class DBConfig:
"""数据库配置类"""
# 数据库连接URL
DATABASE_URL = settings.DATABASE_URL
# 数据库连接参数
DATABASE_ARGS = settings.DATABASE_ARGS
# 异步数据库连接参数
ASYNC_DATABASE_ARGS = {
"pool_size": settings.DB_POOL_SIZE,
"max_overflow": settings.DB_MAX_OVERFLOW,
"pool_recycle": settings.DB_POOL_RECYCLE,
"echo": settings.DB_ECHO,
"pool_pre_ping": True
}
@classmethod
def create_db_url(cls, include_db_name=True):
"""
创建数据库连接URL
Args:
include_db_name: 是否包含数据库名称
Returns:
str: 数据库连接URL
"""
if include_db_name:
return settings.DATABASE_URL
else:
# 根据数据库类型创建不同的连接URL
if settings.DB_DIALECT == 'sqlite':
return "sqlite:///:memory:"
return f"{settings.DB_DIALECT}+{settings.DB_DRIVER}://{settings.DB_USER}:{settings.DB_PASSWORD}@{settings.DB_HOST}:{settings.DB_PORT}/mysql"
# 缓存配置
class CacheConfig:
"""缓存配置类定义Redis缓存配置"""
# Redis连接配置
REDIS_URL = settings.REDIS_URL
REDIS_HOST = settings.REDIS_HOST
REDIS_PORT = settings.REDIS_PORT
REDIS_DB = settings.REDIS_DB
REDIS_PASSWORD = settings.REDIS_PASSWORD
REDIS_PREFIX = settings.REDIS_PREFIX
REDIS_SOCKET_TIMEOUT = settings.REDIS_SOCKET_TIMEOUT
REDIS_SOCKET_CONNECT_TIMEOUT = settings.REDIS_SOCKET_CONNECT_TIMEOUT
REDIS_DECODE_RESPONSES = settings.REDIS_DECODE_RESPONSES
@classmethod
def get_redis_connection_args(cls):
"""
获取Redis连接参数
Returns:
dict: Redis连接参数字典
"""
return {
"host": cls.REDIS_HOST,
"port": cls.REDIS_PORT,
"db": cls.REDIS_DB,
"password": cls.REDIS_PASSWORD,
"socket_timeout": cls.REDIS_SOCKET_TIMEOUT,
"socket_connect_timeout": cls.REDIS_SOCKET_CONNECT_TIMEOUT,
"decode_responses": cls.REDIS_DECODE_RESPONSES
}