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等链接在一起以构建最终查询。