РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
503 of 711 menu

Метод reverse_operate класса ColumnElement

Метод reverse_operate класса ColumnElement создает новое выражение для обратной операции. Он вызывается, когда Python не может выполнить операцию напрямую, так как левый операнд не является объектом ColumnElement. Первым параметром метод принимает оператор, вторым - операнды, а третьим - модификатор обратного порядка.

Синтаксис

reverse_operate(op, other, **kwargs)

Пример

Давайте создадим простое выражение, где обычное число складывается с колонкой:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('num', Integer) ) metadata.create_all(engine) expr = 5 + articles.c.num res = str(expr) print(res)

Результат выполнения кода:

"articles.num + :num_1"

Пример

Давайте рассмотрим случай, когда строка сравнивается с колонкой через оператор равенства:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('status', String) ) metadata.create_all(engine) expr = 'article' == articles.c.status res = str(expr) print(res)

Результат выполнения кода:

"articles.status = :status_1"

Пример

Давайте получим реальный результат выполнения SQL-запроса с обратной операцией:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, insert, select engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('num', Integer) ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(insert(articles), [ {'title': 'article 1', 'num': 10}, {'title': 'article 2', 'num': 20}, {'title': 'article 3', 'num': 30} ]) conn.commit() stmt = select(articles.c.title).where(10 < articles.c.num) res = conn.execute(stmt).fetchall() print(res)

Результат выполнения кода:

[('article 2',), ('article 3',)]

Смотрите также

  • класс ColumnElement,
    который представляет базовый класс для выражений
  • метод operate,
    который создает прямое выражение операции
  • метод op,
    который создает произвольный оператор
  • метод bool_op,
    который создает булев оператор
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить