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

Атрибут default класса Column

Атрибут default класса Column задает значение по умолчанию для столбца таблицы. Значение подставляется SQLAlchemy на стороне Python в момент вставки строки, если для столбца не передано явное значение. Атрибут принимает как скалярное значение, так и вызываемый объект, который SQLAlchemy вызовет при каждой вставке.

Синтаксис

Column(..., default=value)

Пример

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

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import declarative_base, Session Base = declarative_base() class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True) title = Column(String) status = Column(String, default='draft') engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article 1') session.add(article) session.commit() print(article.status)

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

"draft"

Пример

Теперь передадим в default вызываемый объект, чтобы значение вычислялось при каждой вставке:

import datetime from sqlalchemy import create_engine, Column, Integer, String, DateTime from sqlalchemy.orm import declarative_base, Session Base = declarative_base() class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True) title = Column(String) created_at = Column(DateTime, default=datetime.datetime.now) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article 1') session.add(article) session.commit() print(article.created_at)

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

"2024-01-01 12:00:00.000000"

Пример

Давайте посмотрим, какие значения попадают в базу данных при явной передаче и без нее:

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import declarative_base, Session Base = declarative_base() class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True) title = Column(String) status = Column(String, default='draft') engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: first = Article(title='article 1') second = Article(title='article 2', status='published') session.add_all([first, second]) session.commit() print(first.status) print(second.status)

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

"draft" "published"

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

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