config_center/app/models/database.py
guyue55 aa2fc6d84d 1. 精简功能,去除用户管理和鉴权;
2. 优化首页
已完成首页的优化工作,主要改进包括:

- 优化了统计卡片的设计,添加了渐变背景和精致的阴影效果
- 改进了图标和数字的视觉效果,增加了文字阴影和图标动画
- 添加了数据趋势指标,以更直观的方式展示数据状态
- 优化了快速入门指南的样式,增加了悬停效果和平滑过渡动画
- 调整了响应式布局的间距和尺寸,确保在各种设备上都能良好显示
2025-03-04 11:28:17 +08:00

53 lines
1.9 KiB
Python

import logging
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from sqlalchemy import text, select, inspect
from app.core.config import settings
from app.models.base import Base
from app.models.type import Type
# SQLite异步URL需要使用aiosqlite
DATABASE_URL = settings.DATABASE_URL.replace("sqlite:///", "sqlite+aiosqlite:///")
engine = create_async_engine(DATABASE_URL, echo=True)
AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
async def init_db():
"""初始化数据库,创建所有表"""
try:
# 检查表是否存在
async with engine.connect() as conn:
# 检查types表是否存在
result = await conn.execute(text("SELECT name FROM sqlite_master WHERE type='table' AND name='types'"))
table_exists = result.scalar() is not None
if not table_exists:
# 如果表不存在,创建所有表
async with engine.begin() as conn2:
await conn2.run_sync(Base.metadata.create_all)
# 创建默认数据
async with AsyncSessionLocal() as session:
# 创建默认配置类型
default_type = Type(
type_name="default",
description="默认配置类型"
)
session.add(default_type)
await session.commit()
logging.info("数据库初始化成功,创建了默认配置类型")
else:
logging.info("数据库表已存在,跳过初始化")
except Exception as e:
logging.error(f"数据库初始化失败: {e}")
raise
async def get_db():
"""获取数据库会话"""
db = AsyncSessionLocal()
try:
yield db
finally:
await db.close()