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

Атрибут autoincrement

Атрибут autoincrement класса Column указывает, должно ли значение столбца автоматически увеличиваться при вставке новой строки. Обычно применяется к целочисленным столбцам первичного ключа. Атрибут принимает значение True, False или строку 'auto'. По умолчанию используется 'auto', что означает автоматическое определение поведения СУБД.

Синтаксис

Column(autoincrement=True)

Пример

Давайте создадим таблицу с автоматическим приращением первичного ключа:

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True, autoincrement=True) title = Column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1'), Article(title='article 2'), Article(title='article 3') ]) session.commit() res = session.query(Article.id, Article.title).all() print(res)

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

[(1, 'article 1'), (2, 'article 2'), (3, 'article 3')]

Пример

Давайте отключим автоматическое приращение с помощью значения False и зададим идентификаторы вручную:

<+python+> from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True, autoincrement=False) title = Column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(id=10, title='article 1'), Article(id=20, title='article 2') ]) session.commit() res = session.query(Article.id, Article.title).all() print(res) <-python+>

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

[(10, 'article 1'), (20, 'article 2')]

Пример

Давайте посмотрим, какой SQL-запрос генерируется при использовании автоинкремента. Включим вывод запросов параметром echo:

<+python+> from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True, autoincrement=True) title = Column(String) engine = create_engine('sqlite:///:memory:', echo=True) Base.metadata.create_all(engine) with Session(engine) as session: session.add(Article(title='article 1')) session.commit() <-python+>

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

INSERT INTO articles (title) VALUES (?)

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

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