Zum Inhalt

Auslesen von Daten aus der Datenbank

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

  • get (*args,** kwargs)-> Beschreibung

  • get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]

  • first(*args, **kwargs) -> Model

  • all(*args, **kwargs) -> List[Optional[Model]]

  • iterate(*args, **kwargs) -> AsyncGenerator[Model]

  • Das Modell

    • Die Load ()-Methode
    • Frage an den Gruppenleiter

    • QuerysetProxy.get(*args, **kwargs) Die Methode

    • QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) Die Methode
    • QuerysetProxy.first(*args, **kwargs) Die Methode
    • QuerysetProxy.all(*args, **kwargs) Die Methode

erhalten.

get (*args,** kwargs)-> Das Modell

Ruft die erste Zeile aus der Datenbank ab, die die kwargs-Setupbedingungen erfüllt.

Wenn keine Bedingung festgelegt ist, wird die letzte Zeile in der Datenbank zurückgegeben, sortiert nach pk-Spalte.

Das Übergeben einer Bedingung ruft tatsächlich die unten beschriebene Methode filter (*args,** kwargs) auf.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
Klasse Track (ormar. Modell):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        tabellenname ="Spur"
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    Album: Optional [Album]= ormar. ForeignKey (Album) Bearbeiten
    name: str = ormar. String (max_length = 100)
    position: int = ormar. Integer () oder


track = await track. objects. get (name ='The Bird')[Bearbeiten | Quelltext bearbeiten]
# note that above is equivalent to await track . objects . filter (name ='The Bird') . get () ist ein
track2 = track = await track . objects . get () = Spur ist verfügbar .
track2 = track2 oder track2
" True since it 's the only row in db in our example " (wahr ist , seit es die einzige Wurzel in unserem Beispiel ist)
# and get without arguments return first row by pk column desc (und ohne Argumente zuerst von PK Column Desc zurückgegeben werden)

!!!Warnung Wenn die Bedingung nicht in der Zeile erfüllt wird , wird eine NoMatch-Ausnahme ausgelöst .

1
Wenn es mehrere Wege gibt , um mit der Kritik zu sprechen , wird die `MultipleMatches`-Ausnahme ausgelöst .

erhalten oder keine

get_or_none(*args, **kwargs) -> Model

Es ist genau das gleiche wie das oben beschriebene get , aber wenn kein Datenbankdatensatz gefunden wird , der mit den Kriterien übereinstimmt , wird None zurückgegeben , anstatt eine Ausnahme auszulösen .

Erwerben oder schaffen

get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]

Eine Kombination von Methoden erstellen und erhalten .

Versuchen Sie , eine Zeile zu erhalten , die die Bedingung erfüllt , und wenn eine NoMatch-Ausnahme ausgelöst wird , wird eine neue Zeile mit den angegebenen kwargs und \ _ defaults erstellt .

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Klasse Album (ormar . model) :
    ormar _ config = base _ ormar _ config . copy (tablename = " album ") Bearbeiten

    id : int = ormar . Integer (primary _ key = true) (nicht bekannt)
    name : str = ormar . String (max _ length = 100) [ Bearbeiten | Quelltext bearbeiten ]
    Jahr : int = ormar . Integer ()


GET _ OR _ CREATE (name ='The Cat', _ defaults ={"year": 1999}) ist ein
Assert Created ist echt
Assert hinzufügenalbum.name> > Die Katze
assert album . year = 1999 (Jahr)
* Objekt wird erschaffen , weil es nicht existiert
Album2 , created = await Album . objects . get _ or _ create (name = The Cat') [ Bearbeiten | Quelltext bearbeiten ]
assert created ist false
Das neue Album = Album 2
# TRUE as the same DB-ROW is returned

!!!Warnung Obwohl es sich um eine äquivalente Zeile in der Datenbank handelt, sind album und album2 im obigen Beispiel 2 verschiedene Python-Objekte!

Beachten Sie , dass Sie , wenn Sie ein neues Objekt erstellen möchten , entweder den pk-Spaltenwert übergeben oder die pk-Spalte auf eine automatische Inkrementierung setzen müssen .

ersten .

first(*args, **kwargs) -> Model

Rufen Sie die erste Zeile aus der Datenbank ab , die nach Primärschlüsselspalten in aufsteigender Reihenfolge sortiert ist .

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Klasse Album (ormar . model) :
    ormar _ config = base _ ormar _ config . copy (tablename = " album ") Bearbeiten

    id : int = ormar . Integer (primary _ key = true) (nicht bekannt)
    name : str = ormar . String (max _ length = 100)


await Album . objects . create (name ='The Cat') [ Bearbeiten | Quelltext bearbeiten ]
await Album . objects . create (name ='The Dog') [ Bearbeiten | Quelltext bearbeiten ]
Album = await Album . objects . first () [ Bearbeiten | Quelltext bearbeiten ]
# erste Zeile von primary _ key column asc
Assert hinzufügenalbum.name= > Die Katze

Alles .

all(*args, **kwargs) -> List[Optional["Model"]]

Gibt für die von Ihnen festgelegten Filteroptionen alle Zeilen in der Datenbank eines bestimmten Modells zurück .

Das Übergeben von kwargs ist eine Abkürzung , die dem Aufruf von filter (*args , *\ * kwargs) . all () entspricht .

Wenn keine Zeile die Bedingung erfüllt , wird eine leere Liste zurückgegeben .

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Klasse Album (ormar . model) :
    ormar _ config = base _ ormar _ config . copy (tablename = " album ") Bearbeiten

    id : int = ormar . Integer (primary _ key = true) (nicht bekannt)
    name : str = ormar . String (max _ length = 100)


Klasse Track (ormar . Modell) :
    ormar _ config = base _ ormar _ config . copy (tablename = " track ") Bearbeiten

    id : int = ormar . Integer (primary _ key = true) (nicht bekannt)
    Album : Optional [ Album ] = ormar . ForeignKey (Album) [ Bearbeiten | Quelltext bearbeiten ]
    title : str = ormar . String (max _ length = 100)
    position : int = ormar . Integer () oder


Ergebnis = awaitTrack.objects.select_ related (" Album ") . all (Album _ title ='Sample') (Übersetzung)
# will return a list of all tracks for album sample (Liste aller Spuren für das Album Sample)
# for more on joins visit joining and subqueries section [ Bearbeiten | Quelltext bearbeiten ]

tracks = await Track . objects . all () [ Bearbeiten | Quelltext bearbeiten ]
Gibt eine Liste aller Spuren in der Datenbank zurück

Umbenennung

iterate(*args, **kwargs) -> AsyncGenerator["Model"]

Gibt einen asynchronen iterierbaren Generator für alle Zeilen in der Datenbank eines bestimmten Modells zurück .

Das Übergeben von args und/oder kwargs ist eine Abkürzung , die gleich filter(*args, **kwargs).iterate() aufgerufen wird .

Wenn keine Zeile die Bedingungen erfüllt , wird ein leerer Asynchron-Generator zurückgegeben .

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
Klasse Album (ormar . model) :
    ormar _ config = base _ ormar _ config . copy (tablename = " album ") Bearbeiten

    id : int = ormar . Integer (primary _ key = true) (nicht bekannt)
    name : str = ormar . String (max _ length = 100) [ Bearbeiten | Quelltext bearbeiten ]


await Album . objects . create (name ='The Cat') [ Bearbeiten | Quelltext bearbeiten ]
await Album . objects . create (name ='The Dog') [ Bearbeiten | Quelltext bearbeiten ]
Asynchronously iterate all album models yielding one main model at a time from the generator wird asynchronously jedes album-modell zu einer zeit aus dem generator iterieren .
async für Album in Album . objects . iterate () :
    print (Name des Albums)

# die Katze
# Der Hund

!!!Warnung Die Verwendung von iterate () würde dazu führen, dass frühere Aufrufe von prefetch_lated () ignoriert wurden, da es keinen Sinn macht, die beiden Optimierungen zusammen zu setzen.

1
Wenn `iterate()` und `prefetch_related()` zusammen verwendet werden , wird die `QueryDefinitionError`-Ausnahme ausgelöst .

Die Modell-Methode

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

Aufladen

Sie können ForeignKey-bezogene Modelle laden, indem Sie die Methode load () aufrufen.

load () kann verwendet werden, um ein Modell aus der Datenbank zu aktualisieren, wenn es von einem anderen Prozess geändert wird.

!!!tip Lesen Sie mehr über die load ()-Methode in einem Modellansatz

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.

bekommen.

Das funktioniert genau so wie die gete-Funktion oben, ermöglicht es Ihnen jedoch, verwandte Objekte vom anderen Ende der Beziehung zu erhalten.

!!!tip Um mehr über QuerysetProxy zu erfahren, besuchen Sie den Abschnitt querysetproxy

erhalten oder keine

Es ist genau das gleiche wie das oben beschriebene get, aber wenn kein Datenbankdatensatz gefunden wird, der den Kriterien entspricht, wird None zurückgegeben, anstatt eine Ausnahme auszulösen.

!!!tip Um mehr über QuerysetProxy zu erfahren, besuchen Sie den Abschnitt querysetproxy

Erwerben oder schaffen

Genau wie die oben genannte Funktion get_or_create, aber mit der Sie vom anderen Ende der Beziehung aus ein zugehöriges Objekt abfragen oder erstellen können.

!!!tip Um mehr über QuerysetProxy zu erfahren, besuchen Sie den Abschnitt querysetproxy

erster.

Genau wie die erste Funktion oben, aber Sie können das verwandte Objekt vom anderen Ende der Beziehung abfragen.

!!!tip Um mehr über QuerysetProxy zu erfahren, besuchen Sie den Abschnitt querysetproxy

Alles.

Genau die gleichen Funktionen wie oben, aber Sie können verwandte Objekte vom anderen Ende der Beziehung abfragen.

!!!tip Um mehr über QuerysetProxy zu erfahren, besuchen Sie den Abschnitt querysetproxy