Метод get класса Query
Метод get класса Query возвращает
одну запись из таблицы по значению первичного
ключа. Первым параметром метод принимает
идентификатор записи. Если запись с таким
ключом не найдена, метод возвращает None.
Синтаксис
Query.get(ident)
Пример
Давайте создадим модель и получим запись по первичному ключу:
from sqlalchemy import create_engine
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]
text: Mapped[str]
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
with Session(engine) as session:
article = Article(title='article 1', text='text 1')
session.add(article)
session.commit()
res = session.query(Article).get(1)
print(res.title)
Результат выполнения кода:
"article 1"
Пример
Давайте попробуем получить запись с несуществующим ключом:
from sqlalchemy import create_engine
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]
text: Mapped[str]
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
with Session(engine) as session:
article = Article(title='article 1', text='text 1')
session.add(article)
session.commit()
res = session.query(Article).get(999)
print(res)
Результат выполнения кода:
None
Итоговый SQL запрос:
SELECT articles.id AS articles_id, articles.title AS articles_title, articles.text AS articles_text
FROM articles
WHERE articles.id = ?
Пример
Давайте получим несколько записей по списку ключей:
from sqlalchemy import create_engine
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]
text: Mapped[str]
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
with Session(engine) as session:
session.add_all([
Article(title='article 1', text='text 1'),
Article(title='article 2', text='text 2'),
Article(title='article 3', text='text 3'),
])
session.commit()
res = session.query(Article).get([1, 3])
for article in res:
print(article.title)
Результат выполнения кода:
"article 1"
"article 3"