Opdatering 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.
Swipe to start coding
- Hent alle produkter fra databasen.
- Beregn den nye pris for hvert produkt ved at reducere den med 20%.
- Gem de opdaterede priser i databasen.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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?
Awesome!
Completion rate improved to 4.76
Opdatering 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.
Swipe to start coding
- Hent alle produkter fra databasen.
- Beregn den nye pris for hvert produkt ved at reducere den med 20%.
- Gem de opdaterede priser i databasen.
Løsning
Tak for dine kommentarer!
single