Метод values класса Insert
Метод values класса Insert задает значения
столбцов для вставляемой строки. Первым параметром метод
принимает именованные аргументы, где ключом выступает имя
столбца, а значением - вставляемые данные. Метод возвращает
новый объект Insert с добавленными значениями, поэтому
его можно вызывать цепочкой для накопления данных.
Синтаксис
insert(table).values(**values)
Пример
Давайте создадим таблицу articles и вставим одну
строку методом 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',
text='some text',
status='draft',
num=1,
)
print(stmt)
Результат выполнения кода:
"INSERT INTO articles (title, text, status, num) VALUES (:title, :text, :status, :num)"
Пример
Давайте выполним вставку и проверим добавленную строку:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, insert, 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)
with engine.connect() as conn:
stmt = insert(articles).values(
title='article',
text='some text',
status='draft',
num=1,
)
conn.execute(stmt)
conn.commit()
res = conn.execute(select(articles))
print(res.fetchall())
Результат выполнения кода:
[(1, 'article', 'some text', 'draft', 1)]
Пример
Давайте вставим несколько строк, передав в values
список словарей:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, insert, 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)
with engine.connect() as conn:
stmt = insert(articles).values([
{'title': 'article', 'text': 'first', 'status': 'draft', 'num': 1},
{'title': 'user', 'text': 'second', 'status': 'published', 'num': 2},
{'title': 'article', 'text': 'third', 'status': 'archived', 'num': 3},
])
conn.execute(stmt)
conn.commit()
res = conn.execute(select(articles))
print(res.fetchall())
Результат выполнения кода:
[(1, 'article', 'first', 'draft', 1), (2, 'user', 'second', 'published', 2), (3, 'article', 'third', 'archived', 3)]
Смотрите также
-
класс
Insert,
который представляет SQL-выражение INSERT -
метод
returning,
который возвращает вставленные значения -
метод
from_select,
который вставляет данные из SELECT-запроса -
метод
prefix_with,
который добавляет префикс к SQL-выражению