Метод operate
Метод operate класса ColumnElement
предназначен для выполнения произвольной
бинарной операции над выражением SQLAlchemy.
Он принимает в качестве первого параметра
объект-оператор, реализующий логику операции,
а в качестве второго - операнд, с которым
выполняется действие. Метод возвращает новый
объект выражения, готовый для использования
в запросе.
Синтаксис
operate(op, *other, **kwargs)
Пример
Давайте создадим простое выражение и выполним
над ним операцию сложения с помощью метода operate:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: int = Column(Integer, primary_key=True)
title: str = Column(String)
num: int = Column(Integer)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
stmt = Article.num.operate(lambda a, b: a + b, 5)
print(stmt)
Результат выполнения кода:
"articles.num + :num_1"
Пример
Давайте применим метод operate для
объединения строк через оператор конкатенации:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: int = Column(Integer, primary_key=True)
title: str = Column(String)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
stmt = Article.title.operate(lambda a, b: a + b, ' - article')
print(stmt)
Результат выполнения кода:
"articles.title || :title_1"
Смотрите также
-
класс
ColumnElement,
который представляет базовый элемент столбца -
метод
op,
который создает произвольный оператор -
метод
bool_op,
который создает булев оператор -
метод
reverse_operate,
который выполняет обратную бинарную операцию