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

Поле VARCHAR

Тип VARCHAR задает строковый столбец переменной длины. Первым параметром передается максимальная длина строки в символах. Тип используется для хранения коротких и средних текстовых значений, таких как имена, заголовки и статусы.

Класс VARCHAR наследуется от типа String и отличается тем, что всегда создает в базе данных тип с явно указанной длиной. Параметр length задает предел символов, а параметр collation управляет правилами сравнения строк.

Синтаксис

VARCHAR(length, [collation])

Пример

Давайте создадим таблицу с полем типа VARCHAR и посмотрим на итоговый SQL-запрос создания таблицы:

from sqlalchemy import VARCHAR, Integer, MetaData, Table, Column metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', VARCHAR(100)), Column('status', VARCHAR(20)), ) print(articles.c.title.type) print(articles.c.status.type)

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

"VARCHAR(100)" "VARCHAR(20)"

Пример

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

from sqlalchemy import VARCHAR, Integer, create_engine from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(VARCHAR(100)) status: Mapped[str] = mapped_column(VARCHAR(20)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add_all([ Article(title='article 1', status='published'), Article(title='article 2', status='draft'), ]) session.commit() res = session.query(Article).all() for article in res: print(article.id, article.title, article.status)

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

"1 article 1 published" "2 article 2 draft"

Пример

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

from sqlalchemy import VARCHAR, Integer, MetaData, Table, Column from sqlalchemy.schema import CreateTable from sqlalchemy.dialects import sqlite metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', VARCHAR(100)), ) print(CreateTable(articles).compile(dialect=sqlite.dialect()))

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

CREATE TABLE articles ( id INTEGER NOT NULL, title VARCHAR(100), PRIMARY KEY (id) )

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

  • тип String,
    который задает строку без явного указания длины
  • тип Text,
    который хранит длинные текстовые значения
  • тип Unicode,
    который хранит строки в кодировке Unicode
  • тип CHAR,
    который задает строку фиксированной длины
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить