Bắt đầu ngayBắt đầu miễn phí

Chèn một hàng đơn

Có nhiều cách để thực hiện thao tác insert với SQLAlchemy; tuy nhiên, ở đây chúng ta sẽ tập trung vào cách theo cùng một mẫu với câu lệnh select.

Cách này dùng câu lệnh insert trong đó bạn chỉ định bảng làm đối số, và cung cấp dữ liệu muốn chèn vào thông qua phương thức .values() dưới dạng các đối số từ khóa. Ví dụ, nếu my_table có các cột my_col_1my_col_2, thì insert(my_table).values(my_col_1=5, my_col_2="Example") sẽ tạo một hàng trong my_table với giá trị ở my_col_1 bằng 5 và giá trị ở my_col_2 bằng "Example".

Lưu ý sự khác nhau về cú pháp: khi nối thêm một mệnh đề where vào một câu lệnh hiện có, chúng ta bao gồm cả tên bảng lẫn tên cột, ví dụ new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Điều này là cần thiết vì câu lệnh hiện có có thể liên quan đến nhiều bảng.

Ngược lại, bạn chỉ có thể insert một bản ghi vào một bảng duy nhất, nên bạn không cần đưa tên bảng khi dùng values() để chèn, ví dụ stmt = insert(my_table).values(my_col = 10).

Ở đây, tên bảng là data. Bạn có thể chạy repr(data) trong console để xem cấu trúc của bảng.

Bài tập này là một phần của khóa học

Nhập môn Cơ sở dữ liệu với Python

Xem khóa học

Hướng dẫn bài tập

  • Import insertselect từ module sqlalchemy.
  • Tạo một câu lệnh insert insert_stmt cho bảng data để đặt name thành 'Anna', count thành 1, amount thành 1000.00, và valid thành True.
  • Thực thi insert_stmt với connection và lưu lại results.
  • In thuộc tính .rowcount của results để xem có bao nhiêu bản ghi đã được chèn.
  • Tạo một câu lệnh select để truy vấn data cho bản ghi có name'Anna'.
  • Chạy lời giải để in kết quả thực thi câu lệnh select.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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())
Chỉnh sửa và Chạy Mã