Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Opdatering til DB | SQLAlchemy
Databaser i Python

bookOpdatering til DB

I dette kapitel lærer vi, hvordan man opdaterer poster i en database ved hjælp af SQLAlchemy. Opdatering af poster er afgørende, når eksisterende data i dine tabeller skal ændres, såsom at ændre beskrivelser eller andre felter. SQLAlchemy tilbyder effektive og enkle metoder til at udføre opdateringer.

Opdatering af en enkelt post

Den mest almindelige opdateringsoperation er at ændre en enkelt post. For at gøre dette skal du hente objektet, opdatere dets attributter og derefter gemme ændringerne.

product = session.query(Product).filter(Product.id == 1).first()

if product:
    product.description = "Updated description for high-end gaming laptop"
    session.commit()

For at hente et produkt via dets ID bruges en forespørgsel med et filter, der angiver det ønskede ID. Efter opdatering af produktets description gemmer et kald til session.commit() ændringerne i databasen.

Opdatering af flere poster

Nogle gange er det nødvendigt at opdatere flere poster på én gang. SQLAlchemy gør det muligt at bruge filter() sammen med update()-metoden for at ændre poster effektivt.

session.query(Product).filter(Product.price > 1000).update(
    {Product.description: "Updated description for premium products"}, 
    synchronize_session="fetch"
)
session.commit()

For at filtrere produkter med en pris over $1000 bruges en forespørgsel med en betingelse på prisen. update-metoden anvender de ønskede ændringer på alle matchende poster, mens argumentet synchronize_session="fetch" sikrer, at sessionen forbliver synkroniseret efter opdateringen.

Masseopdateringer

Ved større ændringer er masseopdateringer mere effektive, da de direkte ændrer databaseposter uden at indlæse objekter i hukommelsen. Dette gør dem ideelle til at opdatere mange rækker på én gang.

session.query(Product).filter(Product.price < 500).update(
    {Product.description: "Generic description for affordable products"}, 
    synchronize_session="fetch"
)
session.commit()

Denne kode opdaterer effektivt description for alle produkter med en pris under $500 i én operation. Masseopdateringer er hurtigere og sparer hukommelse sammenlignet med at opdatere poster enkeltvis.

Opgave

Swipe to start coding

  1. Hent alle produkter fra databasen.
  2. Beregn den nye pris for hvert produkt ved at reducere den med 20%.
  3. Gem de opdaterede priser i databasen.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 7
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

Can you explain the difference between updating a single record and a bulk update in SQLAlchemy?

What does the `synchronize_session` parameter do in the `update()` method?

Are there any risks or caveats when performing bulk updates with SQLAlchemy?

close

Awesome!

Completion rate improved to 4.76

bookOpdatering til DB

Stryg for at vise menuen

I dette kapitel lærer vi, hvordan man opdaterer poster i en database ved hjælp af SQLAlchemy. Opdatering af poster er afgørende, når eksisterende data i dine tabeller skal ændres, såsom at ændre beskrivelser eller andre felter. SQLAlchemy tilbyder effektive og enkle metoder til at udføre opdateringer.

Opdatering af en enkelt post

Den mest almindelige opdateringsoperation er at ændre en enkelt post. For at gøre dette skal du hente objektet, opdatere dets attributter og derefter gemme ændringerne.

product = session.query(Product).filter(Product.id == 1).first()

if product:
    product.description = "Updated description for high-end gaming laptop"
    session.commit()

For at hente et produkt via dets ID bruges en forespørgsel med et filter, der angiver det ønskede ID. Efter opdatering af produktets description gemmer et kald til session.commit() ændringerne i databasen.

Opdatering af flere poster

Nogle gange er det nødvendigt at opdatere flere poster på én gang. SQLAlchemy gør det muligt at bruge filter() sammen med update()-metoden for at ændre poster effektivt.

session.query(Product).filter(Product.price > 1000).update(
    {Product.description: "Updated description for premium products"}, 
    synchronize_session="fetch"
)
session.commit()

For at filtrere produkter med en pris over $1000 bruges en forespørgsel med en betingelse på prisen. update-metoden anvender de ønskede ændringer på alle matchende poster, mens argumentet synchronize_session="fetch" sikrer, at sessionen forbliver synkroniseret efter opdateringen.

Masseopdateringer

Ved større ændringer er masseopdateringer mere effektive, da de direkte ændrer databaseposter uden at indlæse objekter i hukommelsen. Dette gør dem ideelle til at opdatere mange rækker på én gang.

session.query(Product).filter(Product.price < 500).update(
    {Product.description: "Generic description for affordable products"}, 
    synchronize_session="fetch"
)
session.commit()

Denne kode opdaterer effektivt description for alle produkter med en pris under $500 i én operation. Masseopdateringer er hurtigere og sparer hukommelse sammenlignet med at opdatere poster enkeltvis.

Opgave

Swipe to start coding

  1. Hent alle produkter fra databasen.
  2. Beregn den nye pris for hvert produkt ved at reducere den med 20%.
  3. Gem de opdaterede priser i databasen.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 7
single

single

some-alt