Kom igångKom igång gratis

Infoga en enskild rad

Det finns flera sätt att utföra en infogning med SQLAlchemy, men här fokuserar vi på det som följer samma mönster som select-uttrycket.

Det använder ett insert-uttryck där du anger tabellen som argument och tillhandahåller den data du vill infoga via metoden .values() som nyckelordsargument. Om my_table till exempel innehåller kolumnerna my_col_1 och my_col_2, skapar insert(my_table).values(my_col_1=5, my_col_2="Example") en rad i my_table där värdet i my_col_1 är 5 och värdet i my_col_2 är "Example".

Lägg märke till skillnaden i syntax: när du lägger till ett where-uttryck till ett befintligt uttryck inkluderar du tabellnamnet tillsammans med kolumnnamnet, till exempel new_stmt = old_stmt.where(my_tbl.columns.my_col == 15). Detta behövs eftersom det befintliga uttrycket kan involvera flera tabeller.

Däremot kan du bara infoga en post i en enda tabell med insert, så du behöver inte inkludera tabellnamnet när du använder values(), t.ex. stmt = insert(my_table).values(my_col = 10).

Här är tabellens namn data. Du kan köra repr(data) i konsolen för att undersöka tabellens struktur.

Den här övningen är en del av kursen

Introduktion till databaser i Python

Visa kurs

Övningsinstruktioner

  • Importera insert och select från modulen sqlalchemy.
  • Bygg ett insert-uttryck insert_stmt för tabellen data som sätter name till 'Anna', count till 1, amount till 1000.00 och valid till True.
  • Kör insert_stmt med connection och lagra results.
  • Skriv ut attributet .rowcount för results för att se hur många poster som infogades.
  • Bygg ett select-uttryck som hämtar posten i data där name är 'Anna'.
  • Kör lösningen för att skriva ut resultatet av select-uttrycket.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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())
Redigera och kör kod