2. 优化首页 已完成首页的优化工作,主要改进包括: - 优化了统计卡片的设计,添加了渐变背景和精致的阴影效果 - 改进了图标和数字的视觉效果,增加了文字阴影和图标动画 - 添加了数据趋势指标,以更直观的方式展示数据状态 - 优化了快速入门指南的样式,增加了悬停效果和平滑过渡动画 - 调整了响应式布局的间距和尺寸,确保在各种设备上都能良好显示
53 lines
1.9 KiB
Python
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() |