多个条件的查询,使用 SQLAlchemy 的查询构建器来动态地构建查询,根据传入的条件参数(condition1
, condition2
, condition3
等)来决定是否将这些条件添加到查询中
class Order(Base): __tablename__ = 'orders' id = Column(Integer, primary_key=True) item1= Column(String) item2= Column(String) item3= Column(String)
根据传入条件的实际情况,决定将哪些条件作为filter条件进行查询
def get_data_all(session, id, condition1=None, condition2=None, condition3=None): # 初始化一个空的条件列表 conditions = [] # 如果有id条件,总是加入 conditions.append(Order.id == id) # 如果有其他条件,并且条件值不为None,则加入到条件列表中 if condition1 is not None: conditions.append(Order.item1== condition1) if condition2 is not None: conditions.append(Order.item2== condition2) if condition3 is not None: conditions.append(Order.item3== condition3) # 使用and_函数将所有条件组合起来 if conditions: query = session.query(Order).filter(and_(*conditions)) else: # 如果没有任何条件(除了id),则只根据id查询 query = session.query(Order).filter(Order.id == id) return query.all()