Gegevens uit de database verwijderen
Met de volgende methoden kunt u gegevens uit de database verwijderen.
verwijderen
delete(each: bool = False, **kwargs) -> int
QuerySet-niveau verwijderen wordt gebruikt om meerdere records tegelijk te verwijderen.
U moet eerst de QuerySet filteren of de vlag each = True opgeven om de hele tabel te verwijderen.
Als u deze vlag of filter niet opgeeft, wordt QueryDefinitionError verhoogd.
Retourneert het aantal rijen dat is verwijderd.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 | import asyncio
import databases
import ormar
import sqlalchemy
from examples import create_drop_database
DATABASE_URL = "sqlite:///test.db"
ormar_base_config = ormar.OrmarConfig(
database=databases.Database(DATABASE_URL),
metadata=sqlalchemy.MetaData(),
)
class Book(ormar.Model):
ormar_config = ormar_base_config.copy(tablename="books")
id: int = ormar.Integer(primary_key=True)
title: str = ormar.String(max_length=200)
author: str = ormar.String(max_length=100)
genre: str = ormar.String(
max_length=100,
default="Fiction",
)
@create_drop_database(base_config=ormar_base_config)
async def run_query():
await Book.objects.create(
title="Tom Sawyer", author="Twain, Mark", genre="Adventure"
)
await Book.objects.create(
title="War and Peace in Space", author="Tolstoy, Leo", genre="Fantasy"
)
await Book.objects.create(
title="Anna Karenina", author="Tolstoy, Leo", genre="Fiction"
)
# delete accepts kwargs that will be used in filter
# acting in same way as queryset.filter(**kwargs).delete()
await Book.objects.delete(genre="Fantasy") # delete all fantasy books
all_books = await Book.objects.all()
assert len(all_books) == 2
asyncio.run(run_query())
|
model werkwijze
Elk modelexemplaar heeft een set methoden om zichzelf op te slaan, bij te werken of te laden.
verwijderen
U kunt een model exemplaar verwijderen door de delete () methode aan te roepen.
!!!Tip Lees meer over de delete () methode in de modelmethode
QuerysetProxy methode
Wanneer u rechtstreeks toegang krijgt tot de relevante ManyToMany-velden en ReverseForeignKey, wordt een lijst met gerelateerde modellen geretourneerd.
Maar het toont ook een subset van de QuerySet API, zodat u rechtstreeks vanuit het bovenliggende model kunt filteren, maken, gerelateerde modellen kunt selecteren, enz.
elimineren
De desbetreffende modellen worden één voor één geschrapt.
Verwijder de relatie in de database.
Door de keep\ _ reversed-vlag als Falseormar op te geven, wordt ook het relevante model uit de database verwijderd.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | Klasse Album (ormar. Model):
ormar _ config = basis _ ormar _ config kopie ()
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
is _ best _ seller: bool = ormar. Booleaans (standaard = onwaar)
Klasse Track (ormar. Model):
ormar _ config = basis _ ormar _ config kopie ()
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Album: Optioneel [Album] = ormar. ForeignKey (Album)
Titel: str = ormar. String (max _ length = 100)
Positie: int = ormar. Geheel ()
play _ count: int = ormar. Geheel (nullable = Waar)
Album = wacht op album (naam = "Malibu") .save ()
Track1 = wachten op Track (
Album = album, title = "The Bird", positie = 1, play _ count = 30,
) .opslaan ()
# verwijderen via proxy van de achterkant van de relatie
Wacht op album.tracks.delete (track1, keep _ reversed = False)
# de track is ook verwijderd
Tracks = wacht op Track.objects.all ()
Stel len (sporen) = = 0
|
duidelijk
Een enkele oproep verwijdert alle gerelateerde modellen.
Verwijder ook de relatie in de database.
Door de keep\ _ reversed-vlag als Falseormar op te geven, wordt ook het relevante model uit de database verwijderd.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | Klasse Album (ormar. Model):
ormar _ config = basis _ ormar _ config kopie ()
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
is _ best _ seller: bool = ormar. Booleaans (standaard = onwaar)
Klasse Track (ormar. Model):
ormar _ config = basis _ ormar _ config kopie ()
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Album: Optioneel [Album] = ormar. ForeignKey (Album)
Titel: str = ormar. String (max _ length = 100)
Positie: int = ormar. Geheel ()
play _ count: int = ormar. Geheel (nullable = Waar)
Album = wacht op album (naam = "Malibu") .save ()
Track1 = wachten op Track (
Album = album,
Titel = "De Vogel",
Positie = 1,
afspelen _ tellen = 30,
) .opslaan ()
Track2 = wachten op Track (
Album = album,
Titel = "Harten maken geen schijn van kans",
Positie = 2,
afspelen _ tellen = 20,
) .opslaan ()
# verwijdert alleen de relatie - > wist buitenlandse sleutels op tracks
In afwachting van album.tracks.clear ()
# verwijdert ook de sporen
Wacht op album.tracks.clear (keep _ reversed = False)
|