Атрибут key класса Column
Атрибут key класса Column
хранит строковый ключ колонки. Этот ключ используется
для доступа к колонке из объекта таблицы, а также
для сопоставления колонки с атрибутом ORM-класса.
По умолчанию ключ совпадает с именем колонки,
но его можно задать явно параметром key
при создании колонки.
Синтаксис
column.key
Пример
Давайте создадим колонку и выведем ее ключ:
from sqlalchemy import Column, Integer, String, Table, MetaData
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
)
print(articles.c.id.key)
print(articles.c.title.key)
Результат выполнения кода:
"id"
"title"
Пример
Давайте зададим ключ колонки явно параметром key:
from sqlalchemy import Column, Integer, String, Table, MetaData
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('article_title', String, key='title'),
)
print(articles.c.title.key)
print(articles.c.title.name)
Результат выполнения кода:
"title"
"article_title"
Пример
Давайте используем ключ колонки для доступа к ней
через атрибут c таблицы:
from sqlalchemy import Column, Integer, String, Table, MetaData
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('article_title', String, key='title'),
)
col = articles.c.title
print(col.key)
print(col.name)
print(col.type)
Результат выполнения кода:
"title"
"article_title"
VARCHAR
Пример
Давайте посмотрим, как ключ колонки влияет на имя атрибута в ORM-классе:
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id = Column(Integer, primary_key=True)
article_title = Column('title', String, key='title')
В этом примере колонка в базе данных называется
title, но в ORM-классе доступ к ней
осуществляется через атрибут title,
а не article_title.