Zum Inhalt

Daten aus der Datenbank löschen

Die folgenden Methoden ermöglichen es Ihnen, Daten aus der Datenbank zu löschen.

  • delete(each: bool = False, **kwargs) -> int

  • Das Modell

    • Die Model. delete ()-Methode
    • Frage an den Vereinsvertreter

    • QuerysetProxy. remove ()-Methode aufrufen

    • Die QuerysetProxy. clear ()-Methode

Streichung

delete(each: bool = False, **kwargs) -> int

QuerySet-Ebene Löschen wird verwendet, um mehrere Datensätze gleichzeitig zu löschen.

Sie müssen entweder zuerst QuerySet filtern oder das Flag each = True angeben, um die gesamte Tabelle zu löschen.

Wenn Sie dieses Flag oder diesen Filter nicht angeben, wird ein QueryDefintionError ausgelöst.

Gibt die Anzahl der bereits gelöschten Zahlen zurück.

 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())

Die Modellmethode

Jede Modellinstanz verfügt über eine Reihe von Methoden zum Speichern, Aktualisieren oder Laden von sich selbst.

Streichung

Sie können eine Modellinstanz löschen, indem Sie die Methode delete () aufrufen.

!!!tip Lesen Sie mehr über die delete ()-Methode in Modellmethoden

Die QuerysetProxy Methode

Wenn Sie direkt auf das zugehörige Feld "ManyToMany" und "ReverseForeignKey" zugreifen, wird eine Liste der zugehörigen Modelle zurückgegeben.

Gleichzeitig wird jedoch eine Teilmenge der QuerySet-API verfügbar gemacht, sodass Sie relevante Modelle direkt aus dem übergeordneten Modell filtern, erstellen, auswählen usw. können.

Beseitigung

  1. Das entsprechende Modell wird gestrichen.

Löschen Sie die Beziehungen in der Datenbank.

Wenn Sie das Flag keep_reversed als Falseormar angeben, wird das betreffende Modell auch aus der Datenbank entfernt.

 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. Modell):
    ormar_config = base_ormar_config. copy ()(= Grundeinheit von Ormar_config. copy)

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)[Bearbeiten | Quelltext bearbeiten]
    is_best_seller: bool = ormar. Boolean (default = False)[Bearbeiten | Quelltext bearbeiten]

Klasse Track (ormar. Modell):
    ormar_config = base_ormar_config. copy ()(= Grundeinheit von Ormar_config. copy)

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    Album: Optional [Album]= ormar. ForeignKey (Album) Bearbeiten
    title: str = ormar. String (max_length = 100)
    position: int = ormar. Integer () oder
    play_count: int = ormar. Integer (nullable = true)[Bearbeiten | Quelltext bearbeiten]


Album = await Album (name ="Malibu"). save () ist ein
1. Der Suchbegriff "A-Z"(
    Album = Album, title ="The Bird", position = 1, play_count = 30, oder
und Save ()
Entfernen Sie den Proxy von der umgekehrten Seite
await album. tracks. remove (track1, keep_reversed = False)(await album. tracks. remove (track1, keep_reversed = False)(auf Englisch)

Der Track wurde ebenfalls geliefert
tracks = await Track. objects. all ()[Bearbeiten | Quelltext bearbeiten]
assert len (tracks)== 0

Aufräumen

Ein Aufruf entfernt alle relevanten Modelle auf einmal.

Auch die Beziehungen in der Datenbank werden gelöscht.

Wenn Sie das Flag keep_reversed als Falseormar angeben, wird das betreffende Modell auch aus der Datenbank entfernt.

 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 = base_ormar_config. copy ()(= Grundeinheit von Ormar_config. copy)

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)[Bearbeiten | Quelltext bearbeiten]
    is_best_seller: bool = ormar. Boolean (default = False)[Bearbeiten | Quelltext bearbeiten]

Klasse Track (ormar. Modell):
    ormar_config = base_ormar_config. copy ()(= Grundeinheit von ormar_config. copy)

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    Album: Optional [Album]= ormar. ForeignKey (Album) Bearbeiten
    title: str = ormar. String (max_length = 100)
    position: int = ormar. Integer () oder
    play_count: int = ormar. Integer (nullable = true)[Bearbeiten | Quelltext bearbeiten]


Album = await Album (name ="Malibu"). save () ist ein
1. Der Suchbegriff "A-Z"(
    Das Album = Album
    title ="Der Vogel",
    Stellung = 1,
    Anzahl = 30,
und save ()
Die Tracklist (
    Das Album = Album
    Titel: "Das Herz steht nicht eine Chance"
    Stellung = 2,
    Anzahl = 20,
und Save ()

#Removes the relation only--löschen Sie ausländische Schlüssel auf Spuren
Das Album ist erschienen. tracks. clear ()

#Entfernen Sie auch die Tracks
await album. tracks. clear (keep_reversed = False)(auf Englisch)