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

Функция insert

Функция insert создает выражение для вставки данных в таблицу базы данных. Первым параметром функция принимает таблицу или ORM-класс. Вторым параметром можно передать значения для вставки. Функция возвращает объект выражения, который можно выполнить через соединение или сессию.

Синтаксис

insert(table) insert(table).values(**values)

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, insert engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) stmt = insert(articles).values( title='article', text='some text', status='published', num=1 ) with engine.connect() as conn: res = conn.execute(stmt) conn.commit() print(res.inserted_primary_key)

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

(1,)

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, insert engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('text', String), Column('status', String), Column('num', Integer) ) metadata.create_all(engine) stmt = insert(articles).values([ {'title': 'article 1', 'text': 'text 1', 'status': 'published', 'num': 1}, {'title': 'article 2', 'text': 'text 2', 'status': 'draft', 'num': 2}, {'title': 'article 3', 'text': 'text 3', 'status': 'published', 'num': 3} ]) with engine.connect() as conn: res = conn.execute(stmt) conn.commit() print(res.rowcount)

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

3

Пример

Давайте выполним вставку с помощью ORM-сессии, используя ORM-класс вместо таблицы:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session from sqlalchemy import insert class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) text: Mapped[str] = mapped_column(String) status: Mapped[str] = mapped_column(String) num: Mapped[int] = mapped_column(Integer) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) stmt = insert(Article).values( title='article', text='some text', status='published', num=1 ) with Session(engine) as session: res = session.execute(stmt) session.commit() print(res.inserted_primary_key)

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

(1,)

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

  • функцию select,
    которая создает выражение для выборки данных
  • функцию update,
    которая создает выражение для обновления строк
  • функцию delete,
    которая создает выражение для удаления строк
  • функцию values,
    которая задает значения для вставляемых строк
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить