Migrasi ke 0.20.0 berdasarkan pydantic 2. XX
Versi 0.20.0 memberikan dukungan untuk Pydantic v2. XX, menyediakan pengembang dengan peningkatan kecepatan yang signifikan (validasi dan serialisasi ditulis dalam Rust) dan API bersih, sementara itu menjatuhkan dukungan untuk Pydantic v.1.
ormar pendukung XX memiliki perubahan dalam antarmuka yang sesuai dengan perubahan yang dibuat di Pydantic.
perubahan besar
Migrasi ke versi > = 0.20.0 membutuhkan beberapa perubahan untuk bekerja dengan benar.
Umar, konfigurasi model
Sekarang, setiap model ormar membutuhkan parameter ormar\ _ config, yang merupakan contoh dari kelas OrmarConfig, daripada mendefinisikan kelas Meta. Perhatikan bahwa properti harus diberi nama ormar\ _ config dan menjadi contoh dari kelas config.
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 | Basis data impor
Asrama impor
meter persegi import
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
# ormar < 0,20
Album Kelas (ormar. Model):
Meta Kelas:
Basis data = basis data
Metadata = metadata
Nama tabel = "album"
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Favorit: bool = ormar. Boolean (default = Salah)
# ormar > = 0,20
Kelas AlbumV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
Nama tabel = "album _ v20"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Favorit: bool = ormar. Boolean (default = Salah)
|
OrmarConfig api / Parameter
Ormar\ _ config memaparkan rangkaian pengaturan yang sama yang disediakan oleh kelas Meta. Ini berarti Anda dapat menginisialisasi konfigurasi dengan salah satu parameter berikut:
| Metadata: Opsional [sqlalchemy. MetaData]
Database: Opsional [database. Database]
Mesin: Opsional [sqlalchemy.engine. mesin]
Tablename: Opsional [str]
order _ by: Opsional [Daftar [str]]
Abstrak: bodoh
mengecualikan _ parent _ fields: Opsional [Daftar [str]]
queryset _ class: Tipe [QuerySet]
Ekstra: Ekstra
Kendala: Opsional [Daftar [ColumnCollectionConstraint]]
|
Harap dicatat bahwa untuk mengurangi duplikasi kode dan menyederhanakan pengembangan, tetap disarankan untuk membuat konfigurasi dasar dan memberikan salinan setiap model. OrmarConfig menyediakan metode replikasi yang nyaman untuk ini.
Metode penyalinan mengambil argumen yang sama seperti OrmarConfig di dalamnya, sehingga Anda dapat mengesampingkan sesuai kebutuhan, tetapi secara default akan mengembalikan properti yang ada, kecuali untuk tablename, urutan\ _ by, dan batasan yang dibersihkan secara default.
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 | Basis data impor
Asrama impor
meter persegi import
base _ ormar _ config = ormar. OrmarConfig (
Database = database. Database ("sqlite: / / db.sqlite"),
Metadata = sqlalchemy. MetaData ()
)
Kelas AlbumV20 (ormar. Model):
ormar _ config = base _ ormar _ config copy (
Nama tabel = "album _ v20"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Kelas TrackV20 (ormar. Model):
ormar _ config = base _ ormar _ config copy (
Nama tabel = "trek _ v20"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
|
Parameter bidang opsi tidak lagi didukung.
Sebelum versi 0.20, Anda dapat memberikan argumen opsi ke bidang ormar yang ada untuk membatasi nilai yang dapat diterima. Fitur ini telah dihapus dan Anda harus menggunakan ormar. Bidang Enum dirancang untuk tujuan ini.
Jika Anda ingin melestarikan tipe bidang basis data (yaitu bidang bilangan bulat), Anda selalu dapat menulis validator khusus.
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 | Basis data impor
Asrama impor
meter persegi import
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
# ormar < 0,20
Artis Kelas (ormar. Model):
Meta Kelas:
Basis data = basis data
Metadata = metadata
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Negara: str = ormar. String (default = Salah, max _ length = 50, pilihan = ["UK," "US," "Vietnam," "Colombia"])
# ormar > = 0,20
Enum impor dari enum
Kelas Negara (str, Enum):
Inggris = "Inggris"
AS = "AS"
VIETNAM = "Vietnam"
KOLOMBIA = "Kolombia"
Kelas ArtistV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
Tablename = "artis _ v20"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Negara: Negara = ormar. Enum (enum _ class = Negara)
|
Pydantic\ _ hanya tidak lagi mendukung parameter bidang
Bidang pydantic\ _ only telah ditinggalkan dan dihapus pada v 0,20. Ormar memungkinkan bidang pydantic didefinisikan seperti model pydantic normal.
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 | Basis data impor
Asrama impor
meter persegi import
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
# ormar < 0,20
Kelas Dish (ormar. Model):
Meta Kelas:
Basis data = basis data
Metadata = metadata
Nama meja = "piring"
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Masak: str = ormar. String (max _ length = 40, pydantic _ only = Benar, default = "sam")
# ormar > = 0,20
Kelas DishV20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
Nama meja = "piring _ v20"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Masak: str = "sam" # ini adalah bidang pydantic normal
|
Tidak lagi mendukung properti\ _ dekorator lapangan
Properti\ _ dekorator lapangan digunakan untuk menyediakan cara melewati bidang komputasi yang terdapat dalam kamus / representasi JSON serial model. Versi Pydantic 2. X memperkenalkan kemungkinan ini, jadi Anda sekarang harus beralih ke versi asli Pydantic.
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 | Basis data impor
Asrama impor
meter persegi import
Impor pydantic
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
# ormar < 0,20
Karyawan Kelas (ormar. Model):
Meta Kelas:
Basis data = basis data
Metadata = metadata
Id: int = ormar. Integer (primary _ key = Benar)
nama _ pertama: str = ormar. String (max _ length = 100)
Nama belakang: str = ormar. String (max _ length = 100)
@ Ormar.property _ field ()
Benar-benar nama lengkap (diri) - > str:
Pengembalian f "{self.first_name}{self.last_name}"
# ormar > = 0,20
Kelas Karyawan V20 (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
)
Id: int = ormar. Integer (primary _ key = Benar)
nama _ pertama: str = ormar. String (max _ length = 100)
Nama belakang: str = ormar. String (max _ length = 100)
@ Pydantic computed _ field ()
Benar-benar nama lengkap (diri) - > str:
Pengembalian f "{self.first_name}{self.last_name}"
|
metode deprecated
Semua metode yang tercantum di bawah ini telah tidak digunakan lagi dan akan dihapus dalam versi 0.30 dari Ormar.
Dict () menjadi 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 | Basis data impor
Asrama impor
meter persegi import
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
Album Kelas (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
Nama tabel = "album"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Favorit: bool = ormar. Boolean (default = Salah)
Album = Album (nama = "Sisi Gelap Bulan")
# ormar < 0,20
album _ dict = album.dict ()
# ormar > = 0,20
baru _ album _ dict = album.model _ dump ()
|
Harap dicatat bahwa parameter tetap sama, yaitu termasuk, tidak termasuk, dll.
JSON () menjadi 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 | Basis data impor
Asrama impor
meter persegi import
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
Album Kelas (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
Nama tabel = "album"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Favorit: bool = ormar. Boolean (default = Salah)
Album = Album (nama = "Sisi Gelap Bulan")
# ormar < 0,20
album _ json = album.json ()
# ormar > = 0,20
baru _ album _ dict = album.model _ dump _ json ()
|
Harap dicatat bahwa parameter tetap sama, yaitu termasuk, tidak termasuk, dll.
Konstruksi () menjadi model\ _ konstruksi ()
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 | Basis data impor
Asrama impor
meter persegi import
Database = database. Database ("sqlite: / / db.sqlite")
Metadata = sqlalchemy. MetaData ()
Album Kelas (ormar. Model):
ormar _ config = ormar. OrmarConfig (
Database = database,
Metadata = metadata,
Nama tabel = "album"
)
Id: int = ormar. Integer (primary _ key = Benar)
Nama: str = ormar. String (max _ length = 100)
Favorit: bool = ormar. Boolean (default = Salah)
Tim = {
"Nama": "Sisi Gelap Bulan,"
"Favorit": Benar,
}
# ormar < 0,20
Album = Album.construct (* * params)
# ormar > = 0,20
Album = model _ konstruksi (* * params)
|
Untuk mempelajari lebih lanjut tentang konstruksi, lihat dokumentasi Pydantic.