Commit 52ab7331 authored by 于飞's avatar 于飞

同义词提交

parent 8b0030b8
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/2/24 10:21
# @File : crud.py
# @IDE : PyCharm
# @desc : 增删改查
from typing import Any
from redis.asyncio import Redis
from fastapi import UploadFile
from sqlalchemy.exc import StatementError
from sqlalchemy.orm import joinedload, aliased
from sqlalchemy.orm.strategy_options import _AbstractLoad, contains_eager
from dbgpt.app.apps.core.exception import CustomException
from fastapi.encoders import jsonable_encoder
from sqlalchemy import select, false, and_
from dbgpt.app.apps.core.crud import DalBase
from sqlalchemy.ext.asyncio import AsyncSession
from dbgpt.app.apps.core.validator import vali_telephone
# from dbgpt.app.apps.utils.file.aliyun_oss import AliyunOSS, BucketConf
from dbgpt.app.apps.utils.excel.import_manage import ImportManage, FieldType
from dbgpt.app.apps.utils.excel.write_xlsx import WriteXlsx
# from dbgpt.app.apps.utils.send_email import EmailSender
# from dbgpt.app.apps.utils.sms.reset_passwd import ResetPasswordSMS
from dbgpt.app.apps.utils.tools import test_password
from . import models, schemas
from .params.similar import SimilarParams
from .schemas.similar import SimilarIn
from dbgpt.app.apps.config import settings
from dbgpt.app.apps.utils.excel.excel_manage import ExcelManage
from dbgpt.app.apps.system import crud as vadmin_system_crud
# from dbgpt.app.apps.vadmin.help import models as vadmin_help_models
import copy
from dbgpt.app.apps.utils import status
from datetime import datetime
class SimilarDal(DalBase):
def __init__(self, db: AsyncSession):
super(SimilarDal, self).__init__()
self.db = db
self.model = models.similar.VadminWordSimilar
self.schema = schemas.similar.SimilarSchemas
async def test_session_cache(self):
"""
SQLAlchemy 会话(Session)缓存机制:
当你通过一个会话查询数据库时,SQLAlchemy 首先检查这个对象是否已经在会话缓存中。如果是,它会直接从缓存中返回对象,而不是从数据库重新加载。
在一个会话中,对于具有相同主键的实体,会话缓存确保只有一个唯一的对象实例。这有助于维护数据的一致性。
会话(Session)缓存:https://blog.csdn.net/k_genius/article/details/135491059
:return:
"""
print("==================================会话缓存====================================")
await self.test_session_cache1()
async def test_session_cache1(self):
"""
SQLAlchemy 会话(Session)缓存机制:
当你通过一个会话查询数据库时,SQLAlchemy 首先检查这个对象是否已经在会话缓存中。如果是,它会直接从缓存中返回对象,而不是从数据库重新加载。
在一个会话中,对于具有相同主键的实体,会话缓存确保只有一个唯一的对象实例。这有助于维护数据的一致性。
会话(Session)缓存:https://blog.csdn.net/k_genius/article/details/135491059
示例:会话缓存
:return:
"""
# 第一次查询
sql1 = select(models.similar.VadminWordSimilar).where(models.similar.VadminWordSimilar.id == 1)
queryset1 = await self.db.scalars(sql1)
similar1 = queryset1.unique().first()
if similar1 is None:
print('similar1 is None')
else:
print(f"编号:{similar1.id} 词条:{similar1.word_name} 近义词:{similar1.similar_name} ")
async def create_similar_data(
self,
data: SimilarIn,
v_options: list[_AbstractLoad] = None,
v_return_obj: bool = False,
v_schema: Any = None
) -> Any:
"""
创建近义词
:param data:
:param v_options:
:param v_return_obj:
:param v_schema:
:return:
"""
if data is None:
print('SimilarIn is None')
else:
print(f"词条:{data.word_name} 近义词:{data.similar_name} ")
obj = self.model()
obj.word_name = data.word_name
obj.similar_name = data.similar_name
#await self.flush(obj)
#return await self.out_dict(obj, v_options, v_return_obj, v_schema)
self.db.add(obj)
await self.db.commit()
return None
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/7/7 13:41
# @File : __init__.py
# @IDE : PyCharm
# @desc : 简要说明
from .similar import VadminWordSimilar
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2022/7/7 13:41
# @File : user.py
# @IDE : PyCharm
# @desc : 同义词模型
from datetime import datetime
from sqlalchemy.orm import relationship, Mapped, mapped_column
from sqlalchemy import Column, DateTime, Integer, String, Text, func
from dbgpt.app.apps.db.db_base import BaseModel
class VadminWordSimilar(BaseModel):
__tablename__ = "vadmin_word_similar"
__table_args__ = ({'comment': '同义词表'})
word_name: Mapped[str] = mapped_column(String(100), index=True, nullable=False, comment="词条")
similar_name: Mapped[str] = mapped_column(String(100), index=True, nullable=False, comment="近义词")
\ No newline at end of file
from .similar import SimilarParams
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/18 22:19
# @File : user.py
# @IDE : PyCharm
# @desc : 查询参数-类依赖项
"""
类依赖项-官方文档:https://fastapi.tiangolo.com/zh/tutorial/dependencies/classes-as-dependencies/
"""
from fastapi import Depends, Query
from dbgpt.app.apps.core.dependencies import Paging, QueryParams
class SimilarParams(QueryParams):
"""
列表分页
"""
def __init__(
self,
word_name: str | None = Query(None, title="词条"),
similar_name: str | None = Query(None, title="近义词"),
):
self.word_name = ("like", word_name)
self.similar_name = ("like", similar_name)
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Create Time : 2021/10/18 22:19
# @File : user.py
# @IDE : PyCharm
# @desc : pydantic 模型,用于数据库序列化操作
from datetime import datetime
from pydantic import BaseModel, ConfigDict, field_validator
from pydantic_core.core_schema import FieldValidationInfo
class SimilarSchemas(BaseModel):
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SimilarIn(SimilarSchemas):
"""
创建近义词
"""
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SimilarOut(SimilarSchemas):
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
class SimilarUpdate(BaseModel):
"""
更新近义词信息
"""
word_name: str | None = ""
similar_name: str | None = ""
is_delete: int | None = 0
create_datetime: datetime | None = None
update_datetime: datetime | None = None
delete_datetime: datetime | None = None
from redis.asyncio import Redis
from fastapi import APIRouter, Depends, Body, UploadFile, Request
from dbgpt.app.apps.utils.response import SuccessResponse
from dbgpt.app.apps.vadmin.auth.utils.current import AllUserAuth, FullAdminAuth, OpenAuth
from dbgpt.app.apps.vadmin.auth.utils.validation.auth import Auth
from dbgpt.app.apps.vadmin.word.models.similar import VadminWordSimilar
from dbgpt.app.apps.vadmin.word.params.similar import SimilarParams
from dbgpt.app.apps.vadmin.word.schemas.similar import SimilarSchemas, SimilarIn
from dbgpt.app.apps.vadmin.word import crud
router = APIRouter()
###########################################################
# 同义词管理
###########################################################
@router.get("/similar", summary="获取同义词列表")
async def get_similar(auth: Auth = Depends(OpenAuth())):
model = VadminWordSimilar
print(f"编号:{model.id} 近义词:{model.word_name}")
await crud.SimilarDal(auth.db).test_session_cache()
datas = []
return SuccessResponse(datas, count=1)
@router.post("/create_similar", summary="创建同义词")
async def create_similar(data: Request, auth: Auth = Depends(OpenAuth())):
#async def create_similar(data: SimilarIn, auth: Auth = Depends(FullAdminAuth(permissions=["auth.user.create"]))):
if data is None:
print('SimilarIn is None')
else:
print(f"req词条:{data.query_params['word_name']} req近义词:{data.query_params['similar_name']} ")
data: SimilarIn
data.word_name = data.query_params['word_name']
data.similar_name = data.query_params['similar_name']
data.is_delete = 0
data.create_datetime = ''
data.update_datetime = ''
data.delete_datetime = ''
await crud.SimilarDal(auth.db).create_similar_data(data=data)
datas = []
return SuccessResponse(datas, count=1)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment