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 gennemgås, hvordan man opdaterer poster i en database ved hjælp af SQLAlchemy. Opdatering af poster er væsentligt, når eksisterende data i tabeller skal ændres, såsom opdatering af 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 ændring af en enkelt post. Dette kræver, at objektet hentes, dets attributter opdateres, og ændringerne gemmes.

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 anvendes en forespørgsel med et filter, der angiver det ønskede ID. Efter opdatering af produktets description gemmes ændringerne i databasen ved at kalde session.commit().

Opdatering af flere poster

Nogle gange er det nødvendigt at opdatere flere poster samtidigt. SQLAlchemy muliggør brug af filter() sammen med update()-metoden for effektiv ændring af poster.

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 anvendes en forespørgsel med en betingelse på prisen. update-metoden foretager 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 velegnede til opdatering af 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 individuel opdatering af poster.

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` argument do in the `update()` method?

Are there any risks or things to watch out for when performing bulk updates?

close

Awesome!

Completion rate improved to 4.76

bookOpdatering til DB

Stryg for at vise menuen

I dette kapitel gennemgås, hvordan man opdaterer poster i en database ved hjælp af SQLAlchemy. Opdatering af poster er væsentligt, når eksisterende data i tabeller skal ændres, såsom opdatering af 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 ændring af en enkelt post. Dette kræver, at objektet hentes, dets attributter opdateres, og ændringerne gemmes.

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 anvendes en forespørgsel med et filter, der angiver det ønskede ID. Efter opdatering af produktets description gemmes ændringerne i databasen ved at kalde session.commit().

Opdatering af flere poster

Nogle gange er det nødvendigt at opdatere flere poster samtidigt. SQLAlchemy muliggør brug af filter() sammen med update()-metoden for effektiv ændring af poster.

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 anvendes en forespørgsel med en betingelse på prisen. update-metoden foretager 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 velegnede til opdatering af 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 individuel opdatering af poster.

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