Вставлення одного рядка
Є кілька способів виконати вставлення (insert) в 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 зі значенням у my_col_1, рівним 5, і значенням у my_col_2, рівним "Example".
Зверніть увагу на різницю в синтаксисі: коли додаємо вираз 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, щоб побачити, скільки записів було вставлено. - Створіть оператор вибірки, щоб отримати з
dataзапис ізnameрівним'Anna'. - Запустіть розв'язок, щоб надрукувати результати виконання оператора вибірки.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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())