Вставка одной строки
В SQLAlchemy существует несколько способов выполнить вставку данных, однако мы сосредоточимся на том, который следует той же логике, что и инструкция select.
Он использует инструкцию insert, где таблица указывается в качестве аргумента, а данные для вставки передаются через метод .values() в виде именованных аргументов. Например, если таблица my_table содержит столбцы my_col_1 и my_col_2, то insert(my_table).values(my_col_1=5, my_col_2="Example") создаст в my_table строку со значением 5 в столбце my_col_1 и значением "Example" в столбце my_col_2.
Обратите внимание на разницу в синтаксисе: при добавлении условия where к существующей инструкции необходимо указывать имя таблицы вместе с именем столбца, например: new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Это необходимо, так как существующая инструкция может затрагивать несколько таблиц.
С другой стороны, вставка через insert выполняется только в одну таблицу, поэтому при использовании values() имя таблицы указывать не нужно, например: stmt = insert(my_table).values(my_col = 10).
В данном упражнении таблица называется data. Вы можете выполнить repr(data) в консоли, чтобы изучить структуру таблицы.
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Импортируйте
insertиselectиз модуляsqlalchemy. - Создайте инструкцию вставки
insert_stmtдля таблицыdata, задав следующие значения:name—'Anna',count—1,amount—1000.00,valid—True. - Выполните
insert_stmtчерезconnectionи сохраните результат в переменнуюresults. - Выведите атрибут
.rowcountобъектаresults, чтобы узнать, сколько записей было вставлено. - Создайте инструкцию SELECT для запроса к таблице
data, чтобы найти запись со значением'Anna'в столбцеname. - Запустите решение, чтобы вывести результаты выполнения инструкции SELECT.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import insert and select from sqlalchemy
from sqlalchemy import ____, ____
# Build an insert statement to insert a record into the data table: insert_stmt
insert_stmt = insert(____).values(name=____, ____, ____, ____)
# Execute the insert statement via the connection: results
results = connection.execute(____)
# Print result rowcount
print(____)
# Build a select statement to validate the insert: select_stmt
select_stmt = select([data]).where(____ == ____)
# Print the result of executing the query.
print(connection.execute(select_stmt).first())