Zacznij terazZacznij za darmo

Wstawianie pojedynczego wiersza

Istnieje kilka sposobów wykonania operacji INSERT w SQLAlchemy. Skupimy się na podejściu, które nawiązuje do wzorca stosowanego przy instrukcji select.

Polega ono na użyciu instrukcji insert, w której podajesz tabelę jako argument, a dane do wstawienia przekazujesz przez metodę .values() jako argumenty kluczowe. Na przykład, jeśli tabela my_table zawiera kolumny my_col_1 i my_col_2, to insert(my_table).values(my_col_1=5, my_col_2="Example") utworzy w my_table wiersz z wartością 5 w kolumnie my_col_1 oraz wartością "Example" w kolumnie my_col_2.

Zwróć uwagę na różnicę w składni: gdy dołączasz klauzulę where do istniejącej instrukcji, musisz podać nazwę tabeli i nazwę kolumny, na przykład new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Jest to konieczne, ponieważ istniejąca instrukcja może dotyczyć kilku tabel.

Natomiast operacja insert zawsze dotyczy tylko jednej tabeli, dlatego przy użyciu values() nie musisz podawać nazwy tabeli, np. stmt = insert(my_table).values(my_col = 10).

W tym ćwiczeniu tabela nosi nazwę data. Możesz uruchomić repr(data) w konsoli, aby sprawdzić strukturę tej tabeli.

To ćwiczenie jest częścią kursu

Wprowadzenie do baz danych w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj insert i select z modułu sqlalchemy.
  • Utwórz instrukcję INSERT insert_stmt dla tabeli data, ustawiając: name na 'Anna', count na 1, amount na 1000.00 oraz valid na True.
  • Wykonaj insert_stmt przy użyciu connection i zapisz wynik w zmiennej results.
  • Wyświetl atrybut .rowcount obiektu results, aby sprawdzić, ile rekordów zostało wstawionych.
  • Utwórz instrukcję SELECT, która pobierze z tabeli data rekord o name równym 'Anna'.
  • Uruchom rozwiązanie, aby wyświetlić wyniki wykonania instrukcji SELECT.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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())
Edytuj i uruchom kod