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

Класс Insert

Класс Insert представляет SQL-выражение INSERT и используется для вставки новых строк в таблицу базы данных. Экземпляр класса создается автоматически при вызове метода insert у объекта таблицы Table. Первым параметром метод insert принимает саму таблицу, в которую будут добавлены данные. Полученный объект Insert передается в метод execute соединения для выполнения запроса.

Синтаксис

table.insert()

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String 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 = articles.insert().values( title='article', text='some text', status='draft', num=1 ) with engine.connect() as conn: res = conn.execute(stmt) conn.commit() print(res.inserted_primary_key)

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

(1,)

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select 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 = articles.insert().values([ {'title': 'article', 'text': 'first', 'status': 'draft', 'num': 1}, {'title': 'article', 'text': 'second', 'status': 'published', 'num': 2} ]) with engine.connect() as conn: conn.execute(stmt) conn.commit() res = conn.execute(select(articles.c.title, articles.c.num)).all() print(res)

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

[('article', 1), ('article', 2)]

Пример

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

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String 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 = articles.insert().values( title='article', text='with returning', status='draft', num=3 ).returning(articles.c.id, articles.c.title) with engine.connect() as conn: res = conn.execute(stmt).one() conn.commit() print(res)

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

(1, 'article')

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

  • класс Insert,
    который представляет SQL-выражение INSERT
  • метод values,
    который задает значения для вставляемых столбцов
  • метод returning,
    который возвращает значения из вставленных строк
  • метод from_select,
    который вставляет строки на основе SELECT-запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить