Поле INT
Поле INT представляет целочисленный тип данных
в SQLAlchemy. Оно используется для хранения целых
чисел без дробной части. Тип INT не принимает
обязательных параметров, однако можно указать
дополнительные опции, такие как unsigned
или zerofill, которые поддерживаются
некоторыми СУБД, например MySQL.
Синтаксис
INT()
Пример
Давайте создадим колонку с типом INT
в модели таблицы articles:
from sqlalchemy import INT
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(INT, primary_key=True)
title: Mapped[str]
num: Mapped[int] = mapped_column(INT)
В этом примере колонки id и num
будут иметь целочисленный тип в базе данных.
Пример
Давайте создадим таблицу и вставим в нее запись с целочисленными значениями:
from sqlalchemy import INT, 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(INT, primary_key=True)
title: Mapped[str]
num: Mapped[int] = mapped_column(INT)
def __repr__(self):
return f"Article(id={self.id}, title={self.title}, num={self.num})"
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
with Session(engine) as session:
article = Article(title='article', num=42)
session.add(article)
session.commit()
res = session.execute(select(Article)).scalar_one()
print(res)
Результат выполнения кода:
"Article(id=1, title=article, num=42)"
Пример
Давайте посмотрим, какой SQL-запрос генерирует
тип INT при создании таблицы:
from sqlalchemy import INT, 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(INT, primary_key=True)
title: Mapped[str]
num: Mapped[int] = mapped_column(INT)
engine = create_engine('sqlite:///:memory:')
print(CreateTable(Article.__table__).compile(engine))
Итоговый SQL запрос:
CREATE TABLE articles (
id INTEGER NOT NULL,
title VARCHAR NOT NULL,
num INTEGER NOT NULL,
PRIMARY KEY (id)
)
Смотрите также
-
класс
Integer,
который представляет стандартный целочисленный тип -
класс
BigInteger,
который представляет целочисленный тип большого размера -
класс
SmallInteger,
который представляет целочисленный тип малого размера -
класс
Float,
который представляет число с плавающей точкой