Opdatering 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.
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` parameter do in the `update()` method?
Are there any risks or caveats when performing bulk updates with SQLAlchemy?
Awesome!
Completion rate improved to 4.76
Opdatering 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.
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