Zum Inhalt

Bereichen

Es gibt 12 grundlegende Modellfeldtypen und spezielle ForeignKey-und ManyToMany-Felder, um die Beziehungen zwischen den Modellen herzustellen.

!!!tip Beschreibung der Prüfbeziehungen für die Felder ForeignKey und ManyToMany.

Jedem Feld werden die Spaltenklasse sqlalchemy und der Python-Typ zugewiesen, der zum Erstellen von Pydantik-Modellen verwendet wird.

Wörter nach Typ

Die Schnur

String(max_length: int, min_length: int = None, regex: str = None,) Es gibt einen erforderlichen max_length Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. String
  • Typ (für pydantic): str

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

Der Text

Text () verfügt nicht über die erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. Text
  • Typ (für pydantisch): str

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

Der Burenwert.

Boolean () hat keine erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. Boolean
  • Typ (für pydantisch): bool

Anzahl Anzahl

Integer(minimum: int = None, maximum: int = None, multiple_of: int = None) Es gibt nicht die erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. Integer
  • Typ (für pydantic): int

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

große Zahl

BigInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Es gibt nicht die erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. BigInteger
  • Typ (für pydantisch): int

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

kleine ganze Zahl

SmallInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Es gibt nicht die erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. SmallInteger
  • Typ (für pydantisch): int

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

Floß.

Float(minimum: float = None, maximum: float = None, multiple_of: int = None) Es gibt nicht die erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. Float
  • Typ (für pydantisch): float

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

Zehnerzahlen.

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) Keine notwendigen Parameter vorhanden

Sie können die Parameter length und precision oder max_digits und decimal_places verwenden.

  • Sqlalchemy-Eintrag: sqlalchemy. DECIMAL
  • Typ (für pydantisch): decimal. Decimal

!!!Für weitere Parameter lesen Sie bitte die pydantische Dokumentation.

Das Date

Date () hat nicht die erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. Date
  • Typ (für pydantic): datetime.date

Zeit

Time (timezone: bool = False) Keine weiteren Parameter erforderlich.

Sie können timezone = true für die Zeitzonenerkennungs-Datenbankspalte übergeben.

  • Sqlalchemy-Spalte: sqlalchemy. Time
  • Typ (für pydantic): datetime. time

Datum Zeit

DateTime(timezone: bool = False) Es gibt nicht die erforderlichen Parameter.

Sie können timezone = true für die Zeitzonenerkennungs-Datenbankspalte übergeben.

  • Sqlalchemy-Spalte: sqlalchemy. DateTime
  • Typ (für pydantic): datetime. datetime

Für JSON

JSON () hat keine erforderlichen Parameter.

  • Sqlalchemy-Spalte: sqlalchemy.JSON
  • Typ (für pydantisch): pydantic.Json

2. Wichtige Dokumente

LargeBinary (max_length) hat einen erforderlichen max_length-Parameter.

  • Sqlalchemy-Spalte: sqlalchemy. LargeBinary
  • Typ (für pydantic): Byte

Die LargeBinary-Länge wird in einigen Back-Ends (dh mysql) verwendet, um die Größe des Felds zu bestimmen, in anderen wird sie einfach ignoriert, aber in ormar ist sie immer erforderlich Es sollte die maximale Größe (in Byte) der Datei/Byte sein.

LargeBinary verfügt auch über ein optionales represent_as_base64_str: bool = False-Flag, das Bytewerte automatisch in Base64-decodierte Zeichenfolgen konvertiert, wenn es auf Trueormar gesetzt ist.

Auf diese Weise können Sie über die API Werte festlegen, die während der json-Konvertierung fehlschlagen, auch wenn die Werte nicht mit utf-8 kompatibel sind.

 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 Base64
#weitere wichtige Gründe für das Scheitern


Die Abbildung zeigt die Konfidenzintervalle für die Konfidenzintervalle: (
    Metathek = Metathek
    Datengrundlage = Datenbank
)


class LargeBinaryStr (ormar. Modell):
    ormar_config = base_ormar_config. copy (tablename ="my_str_blobs")(ormar_config = base_ormar_config. copy (tablename ="mein_str_blobs")

    id: int = ormar. Integer (primary_key = true)(nicht bekannt)
    Die Formel dafür lautet: "Strg","Strg"(
        max_length = 100000, represent_as_base64_str = true (auf Englisch)
    )

#set non utf-8 compliant value-note this can be passed by api (i.e. fastapi) in JSON (nicht verfügbar)
item = LargeBinaryStr (test_binary = base64.b64encode (b "\xc3\x28"). decode ())[Bearbeiten | Quelltext bearbeiten]

assert item. test_binary == base64.b64encode (b "\xc3\x28"). decode ()[Bearbeiten | Quelltext bearbeiten]

Die technische Notiz, dass der Underlying Value noch Bytes enthält und als solche gespeichert wird
assert item.__dict__["test_binary"]== b "\xc3\x28" oder

Einmalige gemeinsame Identifikationsnummer

UUID(uuid_format: str = 'hex') Es gibt nicht die erforderlichen Parameter.

  • Sqlalchemy-Spalte: ormar. UUID basierend auf den Feldern sqlalchemy. CHAR (36) oder sqlalchemy. CHAR (32)(für Zeichenfolgen-bzw. Hexadezimalformate)
  • Typ (für pydantic): uuid. UUID

Der Parameter uuid_format erlaubt entweder hexadezimale (Standard) oder Zeichenfolgenwerte.

Abhängig vom Format werden in der Datenbank 32 oder 36 Zeichen verwendet.

Sample sein:

  • Wert im "hexadezimalen" Format =c616ab438cce49dbbf4380d109251dce(Zeichen (32))
  • "string"-Wert =c616ab43-8cce-49db-bf43-80d109251dce(Zeichen (36))

Beim Laden ist es immer die Python-UUID, sodass Sie sie vergleichen und die Werte zwischen den beiden Formatwerten vergleichen können.

Aufzählungen

Es gibt zwei Möglichkeiten, eine Enumeration in ormar-> zu verwenden: eine, bei der Sie ein spezielles Enum-Feld des Spaltentyps sqlalchemy. Enum verwenden, und eine andere, bei der Sie eine Auswahl für ein beliebiges Feld in ormar festlegen.

Das Enum-Feld verwendet den für den Datenbankdialekt spezifischen Enum-Spaltentyp (sofern verfügbar), wird jedoch auf varchar zurückgesetzt, wenn dieser Feldtyp nicht verfügbar ist.

Die Auswahloptionen entsprechen immer dem Typ des ausgewählten Datenbankfelds.

Welche Option Sie verwenden, hängt daher davon ab, welches Backend Sie verwenden und welchen Spalten-/Datentyp Sie im Enumerationsfeld verwenden möchten.

Aufzählungen-Schlagworte

Enum (enum_class = Type[Enum]) hat einen erforderlichen enum_class-Parameter.

  • Sqlalchemy-Eintrag: sqlalchemy. Enum
  • Typ (für pydantisch): Typ[Enum]