Lewati ke isi

lapangan

Ada 12 tipe bidang model dasar serta bidang ForeignKey dan ManyToMany khusus untuk menjalin hubungan antar model.

!!!Tip Deskripsi dari ForeignKey dan ManyToMany hubungan pemeriksaan lapangan.

Setiap bidang diberi kelas kolom SQLALCHEMY dan tipe Python yang digunakan untuk membuat model Pydantic.

tipe lapangan

senar

String(max_length: int, min_length: int = None, regex: str = None,) Ada parameter max\ _ length yang dibutuhkan.

  • Kolom Sqlalchemy: sqlalchemy. String
  • Jenis (untuk pydantic): str

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

Teks

Teks () tidak memiliki parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. Teks
  • Jenis (untuk pydantic): str

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

Boolean

Boolean () tidak memiliki parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. Boolean
  • Jenis (untuk pydantic): bool

bilangan bulat

Integer(minimum: int = None, maximum: int = None, multiple_of: int = None) Tidak ada parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. Integer
  • Jenis (untuk pydantic): int

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

bilangan bulat besar

BigInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Tidak ada parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. Integer Besar
  • Jenis (untuk pydantic): int

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

bilangan bulat kecil

SmallInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Tidak ada parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. SmallInteger
  • Jenis (untuk pydantic): int

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

mengapung

Float(minimum: float = None, maximum: float = None, multiple_of: int = None) Tidak ada parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. Mengambang
  • Jenis (untuk pydantic): mengapung

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

desimal

Decimal(minimum: float = None, maximum: float = None, multiple_of: int = None, precision: int = None, scale: int = None, max_digits: int = None, decimal_places: int = None) Tidak diperlukan parameter

Anda dapat menggunakan parameter panjang dan presisi atau max\ _ digit dan desimal\ _ tempat.

  • Kolom Sqlalchemy: sqlalchemy. DECIMAL
  • Jenis (untuk pydantic): desimal. Desimal

!!!Tip Untuk petunjuk tentang parameter lain, silakan lihat dokumentasi Pydantic.

tanggal

Tanggal () tidak memiliki parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy.Date
  • Tipe (untuk pydantic): datetime.date

waktu

Waktu (zona waktu: bool = Salah) Tidak diperlukan parameter.

Anda dapat melewati zona waktu = Benar untuk kolom basis data yang sadar zona waktu.

  • Kolom Sqlalchemy: sqlalchemy. Waktu
  • Jenis (untuk pydantic): datetime.time

Waktu Tanggal

DateTime(timezone: bool = False) Tidak ada parameter yang diperlukan.

Anda dapat melewati zona waktu = Benar untuk kolom basis data yang sadar zona waktu.

  • Kolom Sqlalchemy: sqlalchemy. Tanggal Waktu
  • Jenis (untuk pydantic): datetime.datetime

JSON

JSON () tidak memiliki parameter yang diperlukan.

  • Kolom Sqlalchemy: sqlalchemy. JSON
  • Tipe (untuk pydantic): pydantic. Json

File biner besar

LargeBinary (max\ _ length) memiliki parameter max\ _ length yang dibutuhkan.

  • Kolom Sqlalkimia: sqlalchemy. LargeBinary
  • Jenis (untuk pydantic): Bytes

LargePanjang biner digunakan dalam beberapa backends (yaitu MySQL) untuk menentukan ukuran bidang, di bidang lain diabaikan begitu saja, tetapi dalam ormar selalu diperlukan. Itu harus menjadi ukuran maksimum (dalam byte) dari file / byte.

LargeBinary juga memiliki bendera represent_as_base64_str: bool = False opsional. Saat disetel ke Trueormar, nilai byte secara otomatis diubah menjadi string yang diterjemahkan Base64, dan Anda juga dapat mengatur nilai dengan melewati string yang dikodekan Base64.

Dengan cara ini, Anda dapat mengatur nilai melalui API, bahkan jika nilainya tidak kompatibel dengan UTF-8, jika tidak maka akan gagal selama konversi 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
Base64 impor
... # impor lainnya dilewati untuk singkatnya


base _ ormar _ config = ormar. OrmarConfig (
    Metadata = metadata
    Basis data = basis data
)


Kelas LargeBinaryStr (ormar. Model):
    ormar _ config = base _ ormar _ config (tablename = "my _ str _ blobs")

    Id: int = ormar. Integer (primary _ key = Benar)
    tes _ biner: str = ormar. LargeBinary (
        max _ length = 100000, mewakili _ as _ base64 _ str = Benar
    )

# set non utf-8 nilai yang sesuai - perhatikan ini bisa dilewati oleh api (i.e.fastapi) di json
Item = LargeBinaryStr (test _ biner = base64.b64encode (b "\ xc3\ x28").decode ())

Menegaskan item. tes _ biner = = base64.b64encode (b "\ xc3\ x28").decode ()

# catatan teknis bahwa nilai yang mendasarinya masih byte dan akan disimpan begitu saja
Menegaskan item. _ _ dict _ _ ["tes _ biner"] = = b "\ xc3\ x28"

Pengidentifikasi perangkat unik universal

UUID(uuid_format: str = 'hex') Tidak ada parameter yang diperlukan.

Kolom Sqlalkimia* : ormar. UUID berdasarkan sqlalchemy. CHAR (36) atau sqlalchemy. CHAR (32) bidang (untuk format string atau heksadesimal masing-masing) * Tipe (untuk pydantic): uuid. UUID

Parameter format uuid\ _ memungkinkan nilai "heksadesimal" (default) atau "string."

Tergantung pada formatnya, 32 atau 36 karakter digunakan dalam database.

Contoh:

Nilai format "heksadesimal" =c616ab438cce49dbbf4380d109251dce(karakter (32)) Nilai "string" =c616ab43-8cce-49db-bf43-80d109251dce(karakter (36))

Itu selalu UUID Python saat dimuat, sehingga Anda dapat membandingkannya dan membandingkan nilai antara kedua format.

pencacahan

Ada dua cara untuk menggunakan enumerasi di ormar - >, satu adalah dengan menggunakan bidang enumerasi khusus dari sqlalchemy. Jenis kolom Enum, dan yang lainnya adalah mengatur seleksi di bidang apa pun di ormar.

Bidang Enum menggunakan tipe kolom Enum spesifik dialek database (jika tersedia), tetapi kembali ke varchar jika jenis bidang ini tidak tersedia.

Opsi pemilihan selalu mengikuti jenis bidang database yang dipilih.

Oleh karena itu, mana yang akan digunakan tergantung pada backend yang Anda gunakan dan tipe kolom / data yang ingin Anda gunakan di bidang pencacahan.

Pencacahan - Ladang

Enum (enum\ _ class = Type\ [Enum]) memiliki argumen kelas enum\ _ yang dibutuhkan.

  • Kolom Sqlalchemy: sqlalchemy. Enum
  • Tipe (untuk pydantic): Tipe\ [Enum]