当前位置:首页 > 编程笔记 > 正文
已解决

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

来自网友在路上 11058105提问 提问时间:2023-11-21 18:25:53阅读次数: 105

最佳答案 问答题库1058位专家为你答疑解惑

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

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

from sqlmodel import SQLModel, Field, Sessionclass Item(SQLModel, table=True):id: int = Field(primary_key=True)name: strdescription: str = None

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

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

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

from sqlmodel import selectdef 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 注入等安全问题。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"关于sqlModel 实现查询表单入参空值和模糊匹配一次性查询":http://eshow365.cn/6-41459-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!