style: ruff自动格式化修复 - 修复180个空白行和格式问题
This commit is contained in:
@@ -6,11 +6,9 @@
|
|||||||
- 智能预加载:关联数据自动预加载
|
- 智能预加载:关联数据自动预加载
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Any, Optional, Type, TypeVar
|
from typing import Any, TypeVar
|
||||||
|
|
||||||
from sqlalchemy import and_, delete, func, select, update
|
from sqlalchemy import delete, func, select, update
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
|
||||||
from sqlalchemy.inspection import inspect
|
|
||||||
|
|
||||||
from src.common.database.core.models import Base
|
from src.common.database.core.models import Base
|
||||||
from src.common.database.core.session import get_db_session
|
from src.common.database.core.session import get_db_session
|
||||||
@@ -19,7 +17,6 @@ from src.common.database.optimization import (
|
|||||||
Priority,
|
Priority,
|
||||||
get_batch_scheduler,
|
get_batch_scheduler,
|
||||||
get_cache,
|
get_cache,
|
||||||
get_preloader,
|
|
||||||
)
|
)
|
||||||
from src.common.logger import get_logger
|
from src.common.logger import get_logger
|
||||||
|
|
||||||
@@ -47,7 +44,7 @@ def _model_to_dict(instance: Base) -> dict[str, Any]:
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _dict_to_model(model_class: Type[T], data: dict[str, Any]) -> T:
|
def _dict_to_model(model_class: type[T], data: dict[str, Any]) -> T:
|
||||||
"""从字典创建 SQLAlchemy 模型实例 (detached状态)
|
"""从字典创建 SQLAlchemy 模型实例 (detached状态)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -70,7 +67,7 @@ class CRUDBase:
|
|||||||
提供通用的增删改查操作,自动集成缓存和批处理
|
提供通用的增删改查操作,自动集成缓存和批处理
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, model: Type[T]):
|
def __init__(self, model: type[T]):
|
||||||
"""初始化CRUD操作
|
"""初始化CRUD操作
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -83,7 +80,7 @@ class CRUDBase:
|
|||||||
self,
|
self,
|
||||||
id: int,
|
id: int,
|
||||||
use_cache: bool = True,
|
use_cache: bool = True,
|
||||||
) -> Optional[T]:
|
) -> T | None:
|
||||||
"""根据ID获取单条记录
|
"""根据ID获取单条记录
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -130,7 +127,7 @@ class CRUDBase:
|
|||||||
self,
|
self,
|
||||||
use_cache: bool = True,
|
use_cache: bool = True,
|
||||||
**filters: Any,
|
**filters: Any,
|
||||||
) -> Optional[T]:
|
) -> T | None:
|
||||||
"""根据条件获取单条记录
|
"""根据条件获取单条记录
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -140,7 +137,7 @@ class CRUDBase:
|
|||||||
Returns:
|
Returns:
|
||||||
模型实例或None
|
模型实例或None
|
||||||
"""
|
"""
|
||||||
cache_key = f"{self.model_name}:filter:{str(sorted(filters.items()))}"
|
cache_key = f"{self.model_name}:filter:{sorted(filters.items())!s}"
|
||||||
|
|
||||||
# 尝试从缓存获取 (缓存的是字典)
|
# 尝试从缓存获取 (缓存的是字典)
|
||||||
if use_cache:
|
if use_cache:
|
||||||
@@ -196,7 +193,7 @@ class CRUDBase:
|
|||||||
Returns:
|
Returns:
|
||||||
模型实例列表
|
模型实例列表
|
||||||
"""
|
"""
|
||||||
cache_key = f"{self.model_name}:multi:{skip}:{limit}:{str(sorted(filters.items()))}"
|
cache_key = f"{self.model_name}:multi:{skip}:{limit}:{sorted(filters.items())!s}"
|
||||||
|
|
||||||
# 尝试从缓存获取 (缓存的是字典列表)
|
# 尝试从缓存获取 (缓存的是字典列表)
|
||||||
if use_cache:
|
if use_cache:
|
||||||
@@ -284,7 +281,7 @@ class CRUDBase:
|
|||||||
id: int,
|
id: int,
|
||||||
obj_in: dict[str, Any],
|
obj_in: dict[str, Any],
|
||||||
use_batch: bool = False,
|
use_batch: bool = False,
|
||||||
) -> Optional[T]:
|
) -> T | None:
|
||||||
"""更新记录
|
"""更新记录
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -424,7 +421,7 @@ class CRUDBase:
|
|||||||
|
|
||||||
async def get_or_create(
|
async def get_or_create(
|
||||||
self,
|
self,
|
||||||
defaults: Optional[dict[str, Any]] = None,
|
defaults: dict[str, Any] | None = None,
|
||||||
**filters: Any,
|
**filters: Any,
|
||||||
) -> tuple[T, bool]:
|
) -> tuple[T, bool]:
|
||||||
"""获取或创建记录
|
"""获取或创建记录
|
||||||
|
|||||||
@@ -7,19 +7,16 @@
|
|||||||
- 关联查询
|
- 关联查询
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Any, Generic, Optional, Sequence, Type, TypeVar
|
from typing import Any, Generic, TypeVar
|
||||||
|
|
||||||
from sqlalchemy import and_, asc, desc, func, or_, select
|
from sqlalchemy import and_, asc, desc, func, or_, select
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
|
||||||
from sqlalchemy.engine import Row
|
|
||||||
|
|
||||||
from src.common.database.core.models import Base
|
|
||||||
from src.common.database.core.session import get_db_session
|
|
||||||
from src.common.database.optimization import get_cache, get_preloader
|
|
||||||
from src.common.logger import get_logger
|
|
||||||
|
|
||||||
# 导入 CRUD 辅助函数以避免重复定义
|
# 导入 CRUD 辅助函数以避免重复定义
|
||||||
from src.common.database.api.crud import _dict_to_model, _model_to_dict
|
from src.common.database.api.crud import _dict_to_model, _model_to_dict
|
||||||
|
from src.common.database.core.models import Base
|
||||||
|
from src.common.database.core.session import get_db_session
|
||||||
|
from src.common.database.optimization import get_cache
|
||||||
|
from src.common.logger import get_logger
|
||||||
|
|
||||||
logger = get_logger("database.query")
|
logger = get_logger("database.query")
|
||||||
|
|
||||||
@@ -32,7 +29,7 @@ class QueryBuilder(Generic[T]):
|
|||||||
支持链式调用,构建复杂查询
|
支持链式调用,构建复杂查询
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, model: Type[T]):
|
def __init__(self, model: type[T]):
|
||||||
"""初始化查询构建器
|
"""初始化查询构建器
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -106,7 +103,7 @@ class QueryBuilder(Generic[T]):
|
|||||||
logger.warning(f"未知操作符: {operator}")
|
logger.warning(f"未知操作符: {operator}")
|
||||||
|
|
||||||
# 更新缓存键
|
# 更新缓存键
|
||||||
self._cache_key_parts.append(f"filter:{str(sorted(conditions.items()))}")
|
self._cache_key_parts.append(f"filter:{sorted(conditions.items())!s}")
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def filter_or(self, **conditions: Any) -> "QueryBuilder":
|
def filter_or(self, **conditions: Any) -> "QueryBuilder":
|
||||||
@@ -126,7 +123,7 @@ class QueryBuilder(Generic[T]):
|
|||||||
|
|
||||||
if or_conditions:
|
if or_conditions:
|
||||||
self._stmt = self._stmt.where(or_(*or_conditions))
|
self._stmt = self._stmt.where(or_(*or_conditions))
|
||||||
self._cache_key_parts.append(f"or:{str(sorted(conditions.items()))}")
|
self._cache_key_parts.append(f"or:{sorted(conditions.items())!s}")
|
||||||
|
|
||||||
return self
|
return self
|
||||||
|
|
||||||
@@ -224,7 +221,7 @@ class QueryBuilder(Generic[T]):
|
|||||||
|
|
||||||
return instances
|
return instances
|
||||||
|
|
||||||
async def first(self) -> Optional[T]:
|
async def first(self) -> T | None:
|
||||||
"""获取第一个结果
|
"""获取第一个结果
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
@@ -337,7 +334,7 @@ class AggregateQuery:
|
|||||||
提供聚合操作如sum、avg、max、min等
|
提供聚合操作如sum、avg、max、min等
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, model: Type[T]):
|
def __init__(self, model: type[T]):
|
||||||
"""初始化聚合查询
|
"""初始化聚合查询
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ import orjson
|
|||||||
from json_repair import repair_json
|
from json_repair import repair_json
|
||||||
from sqlalchemy import select
|
from sqlalchemy import select
|
||||||
|
|
||||||
|
from src.common.database.api.crud import CRUDBase
|
||||||
from src.common.database.compatibility import get_db_session
|
from src.common.database.compatibility import get_db_session
|
||||||
from src.common.database.core.models import PersonInfo
|
from src.common.database.core.models import PersonInfo
|
||||||
from src.common.database.api.crud import CRUDBase
|
|
||||||
from src.common.database.utils.decorators import cached
|
from src.common.database.utils.decorators import cached
|
||||||
from src.common.logger import get_logger
|
from src.common.logger import get_logger
|
||||||
from src.config.config import global_config, model_config
|
from src.config.config import global_config, model_config
|
||||||
@@ -339,7 +339,7 @@ class PersonInfoManager:
|
|||||||
logger.error(f"数据库操作异常,耗时 {total_time:.3f}秒: {e}")
|
logger.error(f"数据库操作异常,耗时 {total_time:.3f}秒: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
found, needs_creation = await _db_update_async(person_id, field_name, processed_value)
|
_found, needs_creation = await _db_update_async(person_id, field_name, processed_value)
|
||||||
|
|
||||||
if needs_creation:
|
if needs_creation:
|
||||||
logger.info(f"{person_id} 不存在,将新建。")
|
logger.info(f"{person_id} 不存在,将新建。")
|
||||||
@@ -658,7 +658,7 @@ class PersonInfoManager:
|
|||||||
try:
|
try:
|
||||||
value = getattr(record, f_name, None)
|
value = getattr(record, f_name, None)
|
||||||
if value is not None and way(value):
|
if value is not None and way(value):
|
||||||
person_id_value = getattr(record, 'person_id', None)
|
person_id_value = getattr(record, "person_id", None)
|
||||||
if person_id_value:
|
if person_id_value:
|
||||||
found_results[person_id_value] = value
|
found_results[person_id_value] = value
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -736,7 +736,7 @@ class PersonInfoManager:
|
|||||||
model_fields = [column.name for column in PersonInfo.__table__.columns]
|
model_fields = [column.name for column in PersonInfo.__table__.columns]
|
||||||
filtered_initial_data = {k: v for k, v in initial_data.items() if v is not None and k in model_fields}
|
filtered_initial_data = {k: v for k, v in initial_data.items() if v is not None and k in model_fields}
|
||||||
|
|
||||||
record, was_created = await _db_get_or_create_async(person_id, filtered_initial_data)
|
_record, was_created = await _db_get_or_create_async(person_id, filtered_initial_data)
|
||||||
|
|
||||||
if was_created:
|
if was_created:
|
||||||
logger.info(f"用户 {platform}:{user_id} (person_id: {person_id}) 不存在,将创建新记录。")
|
logger.info(f"用户 {platform}:{user_id} (person_id: {person_id}) 不存在,将创建新记录。")
|
||||||
|
|||||||
Reference in New Issue
Block a user