From 025ffd58b4a9f794563631aa02fa3f87a8d133bf Mon Sep 17 00:00:00 2001 From: wcq Date: Tue, 28 Mar 2023 10:15:27 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E5=A2=9E=E5=88=AA=E6=94=B9?= =?UTF-8?q?=E6=9F=A5=E5=A2=9E=E5=8A=A0find=5Fin=5Fset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Utils/SqlAlchemyUtils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Utils/SqlAlchemyUtils.py b/Utils/SqlAlchemyUtils.py index f33feec..974f633 100644 --- a/Utils/SqlAlchemyUtils.py +++ b/Utils/SqlAlchemyUtils.py @@ -1,5 +1,5 @@ from pydantic import BaseModel -from sqlalchemy import create_engine, Column, and_, asc, desc +from sqlalchemy import create_engine, Column, and_, asc, desc, func from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, Session, DeclarativeMeta, Query from typing import Literal, List, Any, Optional @@ -49,7 +49,7 @@ class SqlalchemyConnect: # 通用查询接口 -QueryType = Literal['=', '==', '>', '>=', '<', '<=', 'in', 'like', 'range'] +QueryType = Literal['=', '==', '>', '>=', '<', '<=', 'in', 'like', 'range', 'find_in_set'] class QueryParam(BaseModel): @@ -119,10 +119,13 @@ def query_common_core(model, query: Query, param_list: List[QueryParam]): query = query.filter(column <= value) if query_type == "in": query = query.filter(column.in_(value)) + if query_type == "find_in_set": + query = query.filter(func.find_in_set(value, column)) if query_type == "like": query = query.filter(column.like(f'%{value}%')) if query_type == "range": query = query.filter(and_(column >= value[0], column <= value[1])) + return query