通用增刪改查增加find_in_set

This commit is contained in:
wcq 2023-03-28 10:15:27 +08:00
parent c297e20679
commit 025ffd58b4
1 changed files with 5 additions and 2 deletions

View File

@ -1,5 +1,5 @@
from pydantic import BaseModel 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.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, Session, DeclarativeMeta, Query from sqlalchemy.orm import sessionmaker, Session, DeclarativeMeta, Query
from typing import Literal, List, Any, Optional 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): class QueryParam(BaseModel):
@ -119,10 +119,13 @@ def query_common_core(model, query: Query, param_list: List[QueryParam]):
query = query.filter(column <= value) query = query.filter(column <= value)
if query_type == "in": if query_type == "in":
query = query.filter(column.in_(value)) 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": if query_type == "like":
query = query.filter(column.like(f'%{value}%')) query = query.filter(column.like(f'%{value}%'))
if query_type == "range": if query_type == "range":
query = query.filter(and_(column >= value[0], column <= value[1])) query = query.filter(and_(column >= value[0], column <= value[1]))
return query return query