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

Атрибут name класса Column

Атрибут name класса Column хранит имя колонки, под которым она зарегистрирована в таблице базы данных. Это имя используется при генерации SQL-запросов, при обращении к колонке через метаданные таблицы, а также при связывании ORM-атрибутов с реальными столбцами. Значение атрибута задаётся либо явно первым позиционным аргументом при создании колонки, либо автоматически, когда колонка объявляется через mapped_column в декларативной модели.

Синтаксис

column.name

Пример

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

from sqlalchemy import Column, Integer, String, MetaData, Table metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), ) col = articles.c.title print(col.name)

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

"title"

Пример

Давайте объявим декларативную модель и посмотрим, какое имя получает колонка, заданная через mapped_column:

from sqlalchemy import String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) print(Article.__table__.c.id.name) print(Article.__table__.c.title.name)

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

"id" "title"

Пример

Давайте зададим колонке имя, отличное от имени ORM-атрибута, и проверим, что вернёт атрибут name:

from sqlalchemy import String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column('article_id', primary_key=True) title: Mapped[str] = mapped_column('article_title', String) print(Article.__table__.c.article_id.name) print(Article.__table__.c.article_title.name)

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

"article_id" "article_title"

Пример

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

from sqlalchemy import create_engine, String, select from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) status: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add(Article(title='article', status='published')) session.commit() res = session.execute(select(Article.__table__.c.title)).all() print(Article.__table__.c.title.name, res)

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

"title [('article',)]"

Итоговый SQL запрос:

SELECT articles.title FROM articles

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

  • класс Column,
    который представляет колонку таблицы
  • атрибут key,
    который хранит ключ колонки в коллекции таблицы
  • атрибут type,
    который хранит тип данных колонки
  • атрибут table,
    который ссылается на таблицу колонки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить