Zum Inhalt

Migration auf 0.20.0 basierend auf pydantic 2.xx

Version 0.20.0 bietet Unterstützung für pydantic v2.XX, was Entwicklern erhebliche Geschwindigkeitsverbesserungen (Validierung und Serialisierung ist in Rust geschrieben) und sauberere APIs bietet, während es die Unterstützung für pydantic v.1.XX entfernt hat Änderungen an der Schnittstelle in ormar, die den Änderungen in pydantic entsprechen.

Wichtige Änderungen

Die Migration auf Version>= 0.20.0 erfordert mehrere Änderungen, um ordnungsgemäß zu funktionieren.

OMA Modell Ausstattung.

Jetzt benötigt jedes ormar-Modell einen ormar_config-Parameter, der eine Instanz der OrmarConfig-Klasse ist, anstatt die Meta-Klasse zu definieren.

 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
Importieren von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Der Ormar <0.20
Klasse Album (ormar. model):
    Meta Klasse:
        Datengrundlage = Datenbank
        Metathek = Metathek
        Tabername ="Album"


    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    Favoriten: bool = ormar. Boolean (default = False)

@@@#0.20 von
Klasse AlbumV20 (ormar. Modell):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        tabbename ="albums_v20"
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    Favoriten: bool = ormar. Boolean (default = False)

OrmarConfig api/Parameterkennung

ormar_config macht denselben Satz von Einstellungen verfügbar, den die Meta-Klasse bereitstellt, was bedeutet, dass Sie die Konfiguration mit einem der folgenden Parameter initialisieren können:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
metadata: Optional [sqlalchemy. metadata][Bearbeiten | Quelltext bearbeiten]
Datenbank: Optional [Datenbank.]
engine: Optional [sqlalchemy. engine. engine. engine][Bearbeiten | Quelltext bearbeiten]
tabellenname: optional [str]
order_by: Optional [Liste [str]](optional) [Bearbeiten | Quelltext bearbeiten]
Zusammenfassung: Bool
exclude_parent_fields: Optional [Liste [str]](optional)(optional)(optional)(optional)
queryset_class: Typ [QuerySet](QuerySet)
zusätzlich: Extra
constraints: Optional [Liste [ColumnCollectionConstraint]][Bearbeiten | Quelltext bearbeiten]

BaseMeta Äquivalente-Best Practices

Beachten Sie, dass zur Reduzierung der Codeduplizierung und zur Vereinfachung der Entwicklung es immer noch ratsam ist, eine Basiskonfiguration zu erstellen und eine Kopie jedes Modells bereitzustellen OrmarConfig bietet eine praktische Replikationsmethode.

Die copy-Methode akzeptiert dieselben Parameter wie Ormarinit Config, Sie können sie also bei Bedarf außer Kraft setzen, sie gibt jedoch standardmäßig bereits vorhandene Eigenschaften zurück, mit Ausnahme von tablename, order_by und Einschränkungen, die standardmäßig gelöscht werden.

 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
Import von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Die Abbildung zeigt die Konfidenzintervalle für die Konfidenzintervalle (
    Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite"),
    metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]
)

Klasse AlbumV20 (ormar. Modell):
    Die Datei Datei Datei Datei: Config_Config_Config (
        tabbename ="albums_v20"
    )

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


Klasse TrackV20 (ormar. Modell):
    Die Datei Datei Datei Datei: Config_Config_Config (
        tabrename ="tracks_v20"(Übersicht)
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)

optionsfeldparameter werden nicht mehr unterstützt.

Vor Version 0.20 konnten Sie Optionsparameter an jedes vorhandene ormar-Feld senden, um akzeptable Werte einzuschränken Diese Funktion wurde entfernt, und Sie sollten das ormar. Enum-Feld verwenden, das für diesen Zweck entworfen wurde Wenn Sie den Datenbankfeldtyp beibehalten möchten (d. h. ein Integer-Feld), können Sie jederzeit einen benutzerdefinierten Validator schreiben.

 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
Import von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Der Ormar <0.20
Klasse Künstler (ormar. model):
    Meta Klasse:
        Datengrundlage = Datenbank
        Metathek = Metathek


    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)[Bearbeiten | Quelltext bearbeiten]
    String (default = False, max_length = 50, choices =["UK","US","Vietnam"])

@@@#0.20 von
from enum import enum (aus Enum importieren)

class country (str, Enum)(Frankreich):
    Vereinigtes Königreich ="UK"
    Vereinigte Staaten ="US"
    VETNAM = „ Vietnam "
    Farbe: "Colombia"

Klasse ArtistV20 (ormar. Modell):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        tablename ="Künstler_V20"
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)[Bearbeiten | Quelltext bearbeiten]
    Land: Land = ormar. Enum (enum_class = Land)

pydantic_only Feldargumente werden nicht mehr unterstützt

Das Feld pydantic_only ist veraltet und wurde in v0.20 entfernt Ormar erlaubt die Definition von pydantischen Feldern wie ein normales pydantisches Modell.

 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
Importieren von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Der Ormar <0,20
Klasse Dish (ormar. Modell):
    Meta Klasse:
        Datengrundlage = Datenbank
        Metathek = Metathek
        tablename ="Fehler"


    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    String (max_length = 40, pydantic_only = true, default ="sam")(Siehe auch: max_length = 40, pydantic_only = True, default ="sam")

@@@#0.20 ist
class DishV20 (ormar. Modell):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        tablename ="dishes_v20"(Fehler)
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    <p> Dies ist ein normales pydantisches Feld

property_field Dekoratoren werden nicht mehr unterstützt

Mit der property_field-Decorator-Methode, die verwendet wird, um berechnete Felder in der dictionary/serialisierten JSON-Darstellung eines Modells zu übergeben, wurde diese Möglichkeit in der pydantic 2.X Version eingeführt, so dass Sie jetzt auf die native Version von pydantic wechseln sollten.

 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
Import von Datenbanken
Der Import von Ormar
Import von Sqlalchemy
Import von Pydantik

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Der Ormar <0,20
Klasse Mitarbeiter (Modell):
    Meta Klasse :
        Datengrundlage = Datenbank
        Metathek = Metathek


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

    @ormar.propertyDas Feld ()
    def full _ name (self) - > str :
        Zurück zu "{self.first_name}"  {self.last_name}" aus .

@@@#0.20 von
Klasse EmployeeV20 (ormar . Model) :
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank ,
        Metathek = Metathek ,
    )

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

    Die Funktion@pydantic . computed _ field ()
    def full _ name (self) - > str :
        Zurück zu "{self.first_name}"  {self.last_name}> > Bearbeiten

Die vergebene Methode

Alle unten aufgeführten Methoden sind veraltet und werden in Ormar Version 0.30 entfernt .

dict () wird zum Modell \ _ dump ()

 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
Importieren von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Klasse Album (ormar. Modell):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        Tabername ="Album"
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    Favoriten: bool = ormar. Boolean (default = False)

Album vorhören Dark Side Of The Moon

Der Ormar <0.20
Album_Dict = Album. Dict ()(Übersetzung)

@@@#0.20 von
new_album_dict = album. model_dump ()[Bearbeiten | Quelltext bearbeiten]

Bitte beachten Sie, dass die Parameter unverändert bleiben, d. h. ein-, ausschließen usw.

json () wird zum Model_dump_json ()

 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
Import von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Klasse Album (ormar. Modell):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        Tabername ="Album"
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    Favoriten: bool = ormar. Boolean (default = False)

Album vorhören Dark Side Of The Moon

Der Ormar <0,20
JSON = ALBUM. JSON ()(auf Englisch)

@@@#0.20 von
new_album_dict = album. model_dump_json ()[Bearbeiten | Quelltext bearbeiten]

Bitte beachten Sie, dass die Parameter unverändert bleiben, d. h. ein-, ausschließen usw.

construct () wird zum Model_construct ()

 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
Importieren von Datenbanken
Der Import von Ormar
Import von Sqlalchemy

Datenbank = Datenbank. Datenbank ("sqlite://db. sqlite")
metadata = sqlalchemy. metadata ()[Bearbeiten | Quelltext bearbeiten]

Klasse Album (ormar. model):
    Die Abbildung zeigt die Konfidenzintervalle (
        Datenbank = Datenbank,
        Metathek = Metathek,
        Tabername ="Album"
    )

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    name: str = ormar. String (max_length = 100)
    Favoriten: bool = ormar. Boolean (default = False)

paramisch ={
    Inhaltsangabe zu "Dark Side Of The Moon"
    "Favorit": Richtig,
}
Der Ormar <0,20
Album = Album. construct (** Params)(Übersetzung)

@@@#0.20 von
Beispiel: Album = Album. model_construct (** params)

Um mehr über Konstrukte zu erfahren, lesen Sie die pydantische Dokumentation.