Yourmind
@Yourmind
пишу говнокод в перерывах между едой и сериалами

Как сформировать запрос с помощью sqlalchemy?

У меня есть таблица

class Order(Base):
    __tablename__ = "orders"

    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True)
    uuid = sqlalchemy.Column(UUID(as_uuid=True), default=uuid.uuid4, unique=True)
    type = sqlalchemy.Column(sqlalchemy.String)
    status = sqlalchemy.Column(sqlalchemy.String)
    cluster_uuid = sqlalchemy.Column(UUID(as_uuid=False))
    params = sqlalchemy.Column(sqlalchemy_jsonfield.JSONField(enforce_string=False, enforce_unicode=False), default="{}")


Также то, через что я делаю запросы
db = SessionLocal()

Ко мне приходит некоторый словарь (d1) со значениями полей и некоторый словарь (d2) со значениями полей в поле params
Как написать универсальный запрос поиска по данным значениям. Например:
d1 = {'status': 'ready', 'cluster_uuid': 'xxx'}
d2 = {"first_atr': 'my_atr', "second_atr': 'my_atr1', }
Тут надо найти все заказы в статусе 'ready' и кластером 'xxx' и у которого в поле params в котором лежит json поле first_atr равно my_atr и поле second_atr равно my_atr1.

Заранее я не знаю что придет в этих словарях. Как написать, чтобы поиск был одним запросом?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
@nvlveu
model.query.filter_by(**params).first()

Где model — модель, в которой Вы будете искать, а params — Ваш словарь
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы