Uppdatering till Db
I detta kapitel lär vi oss hur man uppdaterar poster i en databas med SQLAlchemy. Att uppdatera poster är avgörande när befintliga data i tabeller behöver ändras, till exempel beskrivningar eller andra fält. SQLAlchemy tillhandahåller effektiva och enkla metoder för att utföra uppdateringar.
Uppdatera en enskild post
Den vanligaste uppdateringsoperationen är att ändra en enskild post. För att göra detta behöver du hämta objektet, uppdatera dess attribut och sedan spara ändringarna.
product = session.query(Product).filter(Product.id == 1).first()
if product:
product.description = "Updated description for high-end gaming laptop"
session.commit()
För att hämta en produkt med dess ID används en fråga med ett filter för att ange önskat ID. Efter att produktens description
har uppdaterats, sparas ändringarna i databasen med session.commit()
.
Uppdatera flera poster
Ibland behöver du uppdatera flera poster samtidigt. SQLAlchemy låter dig använda filter()
tillsammans med update()
-metoden för att effektivt ändra poster.
session.query(Product).filter(Product.price > 1000).update(
{Product.description: "Updated description for premium products"},
synchronize_session="fetch"
)
session.commit()
För att filtrera produkter med ett pris över $1000 används en fråga med ett villkor på priset. update
-metoden tillämpar önskade ändringar på alla matchande poster, medan argumentet synchronize_session="fetch"
säkerställer att sessionen förblir synkroniserad efter uppdateringen.
Massuppdateringar
För storskaliga ändringar är massuppdateringar mer effektiva eftersom de direkt ändrar databasposter utan att ladda objekt i minnet. Detta gör dem idealiska för att uppdatera många rader samtidigt.
session.query(Product).filter(Product.price < 500).update(
{Product.description: "Generic description for affordable products"},
synchronize_session="fetch"
)
session.commit()
Denna kod uppdaterar effektivt description för alla produkter med ett pris under $500 i en enda operation. Massuppdateringar är snabbare och sparar minne jämfört med att uppdatera poster individuellt.
Swipe to start coding
- Hämta alla produkter från databasen.
- Beräkna det nya priset för varje produkt genom att sänka det med 20%.
- Spara de uppdaterade priserna i databasen.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Uppdatering till Db
Svep för att visa menyn
I detta kapitel lär vi oss hur man uppdaterar poster i en databas med SQLAlchemy. Att uppdatera poster är avgörande när befintliga data i tabeller behöver ändras, till exempel beskrivningar eller andra fält. SQLAlchemy tillhandahåller effektiva och enkla metoder för att utföra uppdateringar.
Uppdatera en enskild post
Den vanligaste uppdateringsoperationen är att ändra en enskild post. För att göra detta behöver du hämta objektet, uppdatera dess attribut och sedan spara ändringarna.
product = session.query(Product).filter(Product.id == 1).first()
if product:
product.description = "Updated description for high-end gaming laptop"
session.commit()
För att hämta en produkt med dess ID används en fråga med ett filter för att ange önskat ID. Efter att produktens description
har uppdaterats, sparas ändringarna i databasen med session.commit()
.
Uppdatera flera poster
Ibland behöver du uppdatera flera poster samtidigt. SQLAlchemy låter dig använda filter()
tillsammans med update()
-metoden för att effektivt ändra poster.
session.query(Product).filter(Product.price > 1000).update(
{Product.description: "Updated description for premium products"},
synchronize_session="fetch"
)
session.commit()
För att filtrera produkter med ett pris över $1000 används en fråga med ett villkor på priset. update
-metoden tillämpar önskade ändringar på alla matchande poster, medan argumentet synchronize_session="fetch"
säkerställer att sessionen förblir synkroniserad efter uppdateringen.
Massuppdateringar
För storskaliga ändringar är massuppdateringar mer effektiva eftersom de direkt ändrar databasposter utan att ladda objekt i minnet. Detta gör dem idealiska för att uppdatera många rader samtidigt.
session.query(Product).filter(Product.price < 500).update(
{Product.description: "Generic description for affordable products"},
synchronize_session="fetch"
)
session.commit()
Denna kod uppdaterar effektivt description för alla produkter med ett pris under $500 i en enda operation. Massuppdateringar är snabbare och sparar minne jämfört med att uppdatera poster individuellt.
Swipe to start coding
- Hämta alla produkter från databasen.
- Beräkna det nya priset för varje produkt genom att sänka det med 20%.
- Spara de uppdaterade priserna i databasen.
Lösning
Tack för dina kommentarer!
single