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

Как правильно написать запрос?

у меня есть таблица Order.

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)
created_at = sqlalchemy.Column(sqlalchemy.DateTime(), server_default=sqlalchemy.sql.func.now(), nullable=False)
updated_at = sqlalchemy.Column(sqlalchemy.DateTime(), server_default=sqlalchemy.sql.func.now(), onupdate=sqlalchemy.sql.func.now())
cluster_uuid = sqlalchemy.Column(UUID(as_uuid=False))
params = sqlalchemy.Column(sqlalchemy_jsonfield.JSONField(enforce_string=False, enforce_unicode=False), default="{}")
request_logs = relationship(RequestLog)
snapshots = relationship(Snapshot)


и штука для запросов

db = SessionLocal()
Запрос
db.query(Order).filter(text("CAST(params->>'parent_order_id' AS INTEGER) = :id")).params(id = id).all()

работает.
А пытаюсь сделать
db.query(Order).filter(text("type = :v")).params(v='vdc').all()

не работает.

1)Что я делаю не так?

2)И как писать запрос с 2мя условиями, но одним запросом? Что то типо
db.query(Order).filter(text("CAST(params->>'parent_order_id' AS INTEGER) = :id and type = :v")).params(id = 4, v='vdc').all()
Просто дальше планируется внутри text() подставлять строку, которая будет формироваться динамически.
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы