В настоящее время я пытаюсь написать функцию, которая принимает аргументы. Если аргументы не являются ложными, она создает оператор выбора с их использованием. Я не могу заставить его работать, если я не создам оператор выбора как объект в одной строке. Разделение оператора select приводит к тому, что он игнорируется и даже не включается. Есть ли способ динамически создавать операторы выбора?
def search_land(
session: Session,
longitude: float | bool = False,
latitude: float | bool = False,
entity: str | bool = False,
address: str | bool = False,
county: str | bool = False,
count: int = 1,
parcel_id str | bool = False,
offset: int = 0,
):
stmt = select(Land).offset(offset).limit(count)
if longitude is not False:
stmt.where(Land.longitude.is_(longitude))
if latitude is not False:
stmt.where(Land.latitude.is_(latitude))
if entity is not False:
stmt.where(Land.address.is_(address))
if county is not False:
stmt.where(Land.county.is_(county))
if parcel_id is not False:
stmt.where(Land.parcel_id.is_(parcel_id))
records = session.execute(stmt).all()
entries = []
for object in records:
entries.append((object[0].to_dict()))
return entries