SQLAlchemy基于用户输入构建过滤条件

SQLAlchemy基于用户输入构建过滤条件,sqlalchemy,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.user

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}%")  )
因此,根据用户输入,
运算符中可能有1、2或3个过滤条件。下面是我的问题

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

还是使用sqlalchemy.sql导入文本中的
并生成一个普通的sql查询更好?

我喜欢这样做-

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()

贝考特:很好!。因此,它一直附加到现有查询。该模式是“生成的”-因此“.filter()”返回原始查询的修改版本。允许您将一大堆.filter等链接在一起以构建最终查询。