Migreren naar 0.20.0 op basis van pydantie 2. XX
Versie 0.20.0 biedt ondersteuning voor Pydantic v2. XX en biedt ontwikkelaars aanzienlijke snelheidsverbeteringen (validatie en serialisatie zijn geschreven in Rust) en schonere API 's, terwijl het de ondersteuning voor Pydantic v.1.
De ondersteuningsormar van XX heeft wijzigingen in de interface die overeenkomen met wijzigingen in Pydantic.
grote veranderingen
Migreren naar versie > = 0.20.0 vereist verschillende wijzigingen om goed te werken.
Omar, modelconfiguratie
Nu vereist elk ormar-model een ormar\ _ config-parameter, die een instantie is van de OrmarConfig-klasse, in plaats van de Meta-klasse te definiëren. Merk op dat de eigenschap de naam ormar\ _ config moet hebben en een instantie van de config-klasse moet zijn.
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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
# ormar < 0,20
Klasse Album (ormar. Model):
Klasse Meta:
Database = database
Metagegevens = metagegevens
Tablename = "albums"
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Favoriet: bool = ormar. Booleaans (standaard = onwaar)
# ormar > = 0,20
Klasse AlbumV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
Tafelnaam = "albums _ v20"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Favoriet: bool = ormar. Booleaans (standaard = onwaar)
|
OrmarConfig api / parameters
Ormar\ _ config geeft dezelfde set instellingen weer als de Meta-klasse. Dit betekent dat u de configuratie kunt initialiseren met een van de volgende parameters:
| Metadata: Optioneel [sqlalchemy. MetaData]
Database: Optioneel [databanken. Database]
Motor: Facultatief [sqlalchemy.engine]
Tafelnaam: Optioneel [str]
volgorde _ door: Optioneel [Lijst [str]]
Samenvatting: bool
_ ouder _ velden uitsluiten: Optioneel [Lijst [str]]
queryset _ class: Soort [QuerySet]
Extra: Extra
Beperkingen: Optioneel [Lijst [ColumnCollectionConstraint]]
|
Houd er rekening mee dat om codeduplicatie te verminderen en de ontwikkeling te vereenvoudigen, het nog steeds wordt aanbevolen om een basisconfiguratie te maken en een kopie van elk model te verstrekken. OrmarConfig biedt hiervoor een handige replicatiemethode.
De kopieermethode heeft dezelfde argumenten als de OrmarConfig init, dus u kunt indien nodig overschrijven, maar standaard retourneert het de bestaande eigenschappen, behalve tablename, order\ _ by en beperkingen die standaard worden gewist.
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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
basis _ ormar _ config = ormar. OrmarConfig (
Database = databanken. Database ("sqlite: / / db.sqlite"),
Metagegevens = sqlalchemie. MetaData ()
)
Klasse AlbumV20 (ormar. Model):
ormar _ config = basis _ ormar _ config kopie (
Tafelnaam = "albums _ v20"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Klasse TrackV20 (ormar. Model):
ormar _ config = basis _ ormar _ config kopie (
Tafelnaam = "tracks _ v20"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
|
Opties veldparameters worden niet langer ondersteund.
Voorafgaand aan versie 0.20 kon u optieargumenten geven aan elk bestaand ormar-veld om acceptabele waarden te beperken. Deze functie is verwijderd en u moet het ormar gebruiken. Enum-veld dat voor dit doel is ontworpen.
Als u databaseveldtypen (d.w.z. gehele velden) wilt behouden, kunt u altijd een aangepaste validator schrijven.
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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
# ormar < 0,20
Klasse Artiest (ormar. Model):
Klasse Meta:
Database = database
Metagegevens = metagegevens
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Land: str = ormar. String (standaard = Onwaar, max _ length = 50, keuzes = ["UK", "US", "Vietnam", "Colombia"])
# ormar > = 0,20
Enum import uit enum
Klasse Land (str, Enum):
VK = "VK"
VS = "VS"
VIETNAM = "Vietnam"
COLOMBIA = "Colombia"
Klasse ArtiestenV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
Tablename = "artiesten _ v20"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Land: Land = ormar. Enum (enum _ klasse = Land)
|
Pydantic\ _ ondersteunt alleen geen veldparameters meer
Het veld pydantic\ _ only is verouderd en verwijderd in v 0.20. Ormar staat toe dat pydantische velden worden gedefinieerd als normale pydantische modellen.
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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
# ormar < 0,20
Klasse Schotel (ormar. Model):
Klasse Meta:
Database = database
Metagegevens = metagegevens
Tafelnaam = "schotels"
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Koken: str = ormar. String (max _ length = 40, pydantic _ only = Waar, standaard = "sam")
# ormar > = 0,20
Klasse DishV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
Tafelnaam = "gerechten _ v20"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Kok: str = "sam" # dit is een normaal pydantisch veld
|
Ondersteunt niet langer eigenschap\ _ velddecorateurs
De eigenschap\ _ field decorator wordt gebruikt om een manier te bieden om berekende velden door te geven die zijn opgenomen in de woordenboek / geserialiseerde JSON-weergave van het model. De Pydantic 2. X-versie introduceerde deze mogelijkheid, dus u moet nu overschakelen naar de Pydantic native-versie.
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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Pydantische invoer
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
# ormar < 0,20
Klasse Medewerker (ormar. Model):
Klasse Meta:
Database = database
Metagegevens = metagegevens
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
voornaam: str = ormar. String (max _ length = 100)
achternaam: str = ormar. String (max _ length = 100)
@ Ormar.property _ veld ()
Def volledige _ naam (zelf) - > str:
Geeft f "{self.first_name}{self.last_name}" terug
# ormar > = 0,20
Klasse MedewerkerV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
voornaam: str = ormar. String (max _ length = 100)
achternaam: str = ormar. String (max _ length = 100)
@ Pydantisch berekend _ veld ()
Def volledige _ naam (zelf) - > str:
Geeft f "{self.first_name}{self.last_name}" terug
|
verouderde methode
Alle onderstaande methoden zijn verouderd en worden verwijderd in versie 0.30 van Ormar.
Dict () wordt model\ _ 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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
Klasse Album (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
Tablename = "albums"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Favoriet: bool = ormar. Booleaans (standaard = onwaar)
Album = Album (naam = "Donkere kant van de maan")
# ormar < 0,20
album _ dict = album.dict ()
# ormar > = 0,20
nieuw _ album _ dict = album.model _ dump ()
|
Houd er rekening mee dat de parameters hetzelfde blijven, d.w.z. opnemen, uitsluiten, enz.
JSON () wordt 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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
Klasse Album (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
Tablename = "albums"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Favoriet: bool = ormar. Booleaans (standaard = onwaar)
Album = Album (naam = "Donkere kant van de maan")
# ormar < 0,20
album _ json = album.json ()
# ormar > = 0,20
nieuw _ album _ dict = album.model _ dump _ json ()
|
Houd er rekening mee dat de parameters hetzelfde blijven, d.w.z. opnemen, uitsluiten, enz.
Construct () wordt 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 | Databanken importeren
Ormar importeren
Sqlalchemie invoeren
Database = databanken. Database ("sqlite: / / db.sqlite")
Metagegevens = sqlalchemie. MetaData ()
Klasse Album (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = databank,
metagegevens = metagegevens;
Tablename = "albums"
)
Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
Naam: str = ormar. String (max _ length = 100)
Favoriet: bool = ormar. Booleaans (standaard = onwaar)
Params = {
"Naam": "Donkere Kant van de Maan",
"Favorieten": Waar,
}
# ormar < 0,20
Album = Album.construct (* * delen)
# ormar > = 0,20
Album = model _ construct (* * delen)
|
Raadpleeg de Pydantische documentatie voor meer informatie over constructies.