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

Поле DateTime

Тип DateTime предназначен для хранения даты и времени в базе данных. При создании колонки с этим типом можно указать параметр timezone, который определяет, будет ли храниться информация о часовом поясе. В Python значения представляются объектами datetime.datetime.

Синтаксис

from sqlalchemy import DateTime DateTime(timezone=False)

Пример

Давайте создадим таблицу с колонкой типа DateTime и сохраним в нее текущее время:

from datetime import datetime from sqlalchemy import create_engine, DateTime, String 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] = mapped_column(String(50)) created_at: Mapped[datetime] = mapped_column(DateTime) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', created_at=datetime(2024, 1, 15, 10, 30, 0)) session.add(article) session.commit() res = session.query(Article).first() print(res.created_at)

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

"2024-01-15 10:30:00"

Пример

Давайте включим поддержку часового пояса параметром timezone:

from datetime import datetime, timezone from sqlalchemy import create_engine, DateTime, String 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] = mapped_column(String(50)) created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article( title='article', created_at=datetime(2024, 1, 15, 10, 30, 0, tzinfo=timezone.utc) ) session.add(article) session.commit() res = session.query(Article).first() print(res.created_at)

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

"2024-01-15 10:30:00+00:00"

Пример

Давайте используем автозаполнение времени создания записи через функцию func.now:

from datetime import datetime from sqlalchemy import create_engine, DateTime, String, func 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] = mapped_column(String(50)) created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) 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.query(Article).first() print(res.created_at is not None)

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

True

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

  • тип Date,
    который хранит только дату без времени
  • тип Time,
    который хранит только время без даты
  • тип Interval,
    который представляет временной интервал
  • тип TIMESTAMP,
    который хранит метку времени
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить