SQLAlchemy根据用户输入构建过滤条件

时间:2020-09-08 15:00:17

标签: sqlalchemy

sqlalchemy中,如何根据用户选择建立过滤条件?这是我尝试过的方法,但似乎没有用

  conditions =[]
  if input.userid: 
    conditions.append( userdata.uid == input.userid)
  if input.location:
    conditions.append( userdata.location.like(f"{input.location}%") )
  if input.username: 
    conditions.append( userdata.username.like(f"%{input.username}%")  )

因此,根据用户输入,and_运算符中可能存在1、2或3个过滤条件。以下是我的查询

records = session.query(userdata).filter(and_(conditions)).all()

还是使用from sqlalchemy.sql import text并生成普通的SQL查询更好?

1 个答案:

答案 0 :(得分:0)

我喜欢这样-

query = session.query(userdata)
if input.userid:
  query = query.filter(userdata.uid==input.userid)
if input.location:
  query = query.filter(userdata.location.like(f"{input.location}%"))

records = query.all()
相关问题