у меня есть таблица 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() подставлять строку, которая будет формироваться динамически.