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

Тип DOUBLE_PRECISION

Тип DOUBLE_PRECISION представляет число с плавающей точкой двойной точности в базе данных. Он соответствует SQL-типу DOUBLE PRECISION и обычно занимает 8 байт, обеспечивая точность примерно 15 знаков после запятой. Тип применяется для хранения вещественных чисел, когда нужна повышенная точность по сравнению с обычным FLOAT.

Тип DOUBLE_PRECISION не принимает обязательных параметров. При необходимости можно указать precision, но в большинстве СУБД этот параметр игнорируется, поскольку двойная точность фиксирована.

Синтаксис

from sqlalchemy import DOUBLE_PRECISION column = DOUBLE_PRECISION()

Пример

Давайте создадим таблицу с колонкой типа DOUBLE_PRECISION и вставим в неё значение:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, DOUBLE_PRECISION engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('num', DOUBLE_PRECISION), ) metadata.create_all(engine) with engine.connect() as conn: conn.execute(articles.insert().values(id=1, num=3.141592653589793)) res = conn.execute(articles.select()).fetchall() print(res)

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

[(1, 3.141592653589793)]

Пример

Давайте посмотрим, какой SQL-тип генерируется для разных диалектов:

from sqlalchemy import DOUBLE_PRECISION from sqlalchemy.dialects import postgresql, mysql, sqlite column_type = DOUBLE_PRECISION() print(column_type.compile(dialect=postgresql.dialect())) print(column_type.compile(dialect=mysql.dialect())) print(column_type.compile(dialect=sqlite.dialect()))

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

"DOUBLE PRECISION" "DOUBLE" "FLOAT"

Пример

Давайте используем тип в декларативной модели:

from sqlalchemy import DOUBLE_PRECISION from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] num: Mapped[float] = mapped_column(DOUBLE_PRECISION)

Теперь создадим таблицу и добавим запись:

from sqlalchemy import create_engine from sqlalchemy.orm import Session from models import Base, Article engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', num=2.718281828459045) session.add(article) session.commit() res = session.query(Article).all() for row in res: print(row.id, row.title, row.num)

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

"1 article 2.718281828459045"

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

  • тип Float,
    который представляет число с плавающей точкой
  • тип Numeric,
    который хранит точные десятичные числа
  • тип REAL,
    который представляет число с плавающей точкой одинарной точности
  • тип DECIMAL,
    который хранит десятичные числа с фиксированной точностью
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить