Поле Integer
Поле Integer представляет целочисленный
тип данных в SQLAlchemy. Оно используется
при описании колонок таблиц, хранящих целые
числа. Тип Integer не принимает
обязательных параметров и автоматически
преобразуется в соответствующий тип СУБД:
INTEGER в SQLite, INTEGER
в PostgreSQL, INT в MySQL. При создании
колонки можно указать дополнительные
параметры, например primary_key
или nullable.
Синтаксис
from sqlalchemy import Integer
Integer()
Пример
Давайте создадим колонку с типом
Integer в модели:
from sqlalchemy import Integer, String, create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(Integer, primary_key=True)
title: Mapped[str] = mapped_column(String)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
print(Article.__table__.columns['id'].type)
Результат выполнения кода:
"INTEGER"
Пример
Давайте создадим объект и сохраним его в базу данных:
from sqlalchemy import Integer, String, create_engine, select
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(Integer, primary_key=True)
title: Mapped[str] = mapped_column(String)
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
with Session(engine) as session:
article = Article(title='article')
session.add(article)
session.commit()
res = session.execute(select(Article)).scalar_one()
print(res.id, res.title)
Результат выполнения кода:
"1 article"
Пример
Давайте посмотрим, какой SQL-запрос
генерирует SQLAlchemy при создании таблицы
с колонкой типа Integer:
from sqlalchemy import Integer, String, create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy.schema import CreateTable
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(Integer, primary_key=True)
title: Mapped[str] = mapped_column(String)
engine = create_engine('sqlite:///:memory:')
print(CreateTable(Article.__table__).compile(engine))
Итоговый SQL запрос:
CREATE TABLE articles (
id INTEGER NOT NULL,
title VARCHAR NOT NULL,
PRIMARY KEY (id)
)
Смотрите также
-
класс
BigInteger,
который представляет большое целое число -
класс
SmallInteger,
который представляет малое целое число -
класс
Float,
который представляет число с плавающей точкой -
класс
Numeric,
который представляет точное числовое значение