关于sqlModel 实现查询表单入参空值和模糊匹配一次性查询

在处理表单提交后,后端 SQL 查询部分空值和部分模糊值时,可以使用 SQLModel 构建动态查询。你可以根据表单数据动态构建 SQL 查询,并且只添加那些非空的、有值的条件。

以下是一个示例,假设你有一个模型 Item

from sqlmodel import SQLModel, Field, Session

class Item(SQLModel, table=True):
    id: int = Field(primary_key=True)
    name: str
    description: str = None

然后,你的表单数据可能是一个字典,其中包含用户提交的查询条件:

form_data = {
    "name": "example",
    "description": None  # 或者 "some_description"
}

接下来,你可以使用 SQLModel 构建查询:

from sqlmodel import select

def dynamic_query(session, form_data):
    query = select(Item)

    # 添加非空的等值条件
    for field, value in form_data.items():
        if value is not None:
            query = query.where(getattr(Item, field) == value)

    # 如果需要模糊查询,你可以修改为以下方式:
    # for field, value in form_data.items():
    #     if value is not None:
    #         query = query.where(getattr(Item, field).like(f"%{value}%"))

    return session.exec(query).all()

通过上述函数,你可以根据表单数据动态构建 SQL 查询。这样,只有那些有值的条件会被添加到查询中,而空值条件则会被忽略。在这个例子中,等值条件用于非空字段,如果需要模糊查询,可以使用 likeilike 方法。

使用示例:

with Session(engine) as session:
    results = dynamic_query(session, form_data)
    print(results)

这将返回符合表单数据条件的项目列表。请确保在实际应用中适当处理和验证用户输入以防止 SQL 注入等安全问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值