在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查询更好?
答案 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()