Ga naar inhoud

veld

Er zijn 12 basismodelveldtypen en speciale ForeignKey- en ManyToMany-velden om relaties tussen modellen tot stand te brengen.

!!!Tip Een beschrijving van de ForeignKey- en ManyToMany-veldcontrolerelaties.

Elk veld krijgt de SQLALCHEMY-kolomklasse toegewezen en het Python-type dat wordt gebruikt om het Pydantic-model te maken.

type veld

touwtje

String(max_length: int, min_length: int = None, regex: str = None,) Er is een vereiste max\ _ length parameter.

  • Sqlalchemy kolom: sqlalchemy. String
  • Type (voor pydantic): str

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

Tekst

Text () heeft niet de vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemie. Tekst
  • Type (voor pydantic): str

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

Booleaans

Boolean () heeft geen vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemie. Booleaans
  • Type (voor pydantic): bool

geheel getal

Integer(minimum: int = None, maximum: int = None, multiple_of: int = None) Er zijn geen vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemie. Geheel
  • Type (voor pydantic): int

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

groot geheel getal

BigInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Er zijn geen vereiste parameters.

  • Sqlalchemy kolom: sqlalchemy. Groter
  • Type (voor pydantic): int

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

klein geheel getal

SmallInteger(minimum: int = None, maximum: int = None, multiple_of: int = None) Er zijn geen vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemie. KleinInteger
  • Type (voor pydantic): int

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

drijven

Float(minimum: float = None, maximum: float = None, multiple_of: int = None) Er zijn geen vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemie. Drijven
  • Type (voor pydantic): vlotter

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

decimaal

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) Geen vereiste parameters

U kunt de lengte- en precisieparameters of max\ _ cijfers en decimale\ _ plaatsen gebruiken.

  • Kolom Sqlalchemie: sqlalchemie. DECIMAL
  • Type (voor pydantisch): decimaal. Decimaal

!!!Tip Raadpleeg de Pydantic documentatie voor instructies over andere parameters.

datum

Date () heeft niet de vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemy.Date
  • Type (voor pydantic): datetime.date

tijd

Tijd (tijdzone: bool = False) Geen vereiste parameters.

U kunt tijdzone = Waar doorgeven voor een tijdzonebewuste databasekolom.

  • Kolom Sqlalchemie: sqlalchemie. Tijd
  • Type (voor pydantic): datetime.time

Datum Tijd

DateTime(timezone: bool = False) Er zijn geen vereiste parameters.

U kunt tijdzone = Waar doorgeven voor een tijdzonebewuste databasekolom.

  • Kolom Sqlalchemie: sqlalchemie. Datumtijd
  • Type (voor pydantic): datetime.datetime

JSON

JSON () heeft geen vereiste parameters.

  • Kolom Sqlalchemie: sqlalchemie. JSON
  • Type (voor pydantic): pydantic. Json

Groot binair bestand

LargeBinary (max\ _ length) heeft een vereiste max\ _ length parameter.

  • Sqlalchemie kolom: sqlalchemie. Grotebinair
  • Type (voor pydantic): Bytes

LargeBinary length wordt gebruikt in sommige backends (d.w.z. MySQL) om de grootte van een veld te bepalen, in andere wordt het gewoon genegeerd, maar in ormar is het altijd vereist. Het zou de maximale grootte (in bytes) van het bestand / byte moeten zijn.

LargeBinary heeft ook een optionele represent_as_base64_str: bool = False-vlag. Wanneer ingesteld op Trueormar, wordt de bytewaarde automatisch geconverteerd naar een Base64-gedecodeerde string, en u kunt de waarde ook instellen door een Base64-gecodeerde string door te geven.

Op deze manier kunt u de waarde instellen via de API, zelfs als de waarde niet UTF-8-compatibel is, anders mislukt deze tijdens de JSON-conversie.

 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 importeren
... # andere invoer overgeslagen voor beknoptheid


basis _ ormar _ config = ormar. OrmarConfig (
    Metagegevens = metagegevens
    Database = database
)


Klasse LargeBinaryStr (ormar. Model):
    ormar _ config = basis _ ormar _ config (tabelnaam = "mijn _ str _ blobs")

    Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
    test _ binair: str = ormar. Grotebinair (
        max _ length = 100000, vertegenwoordigen _ als _ base64 _ str = Waar
    )

# set niet utf-8 conforme waarde - let op dit kan worden doorgegeven door api (i.e.fastapi) in json
Item = GroteBinaryStr (test _ binair = base64.b64encode (b "\ xc3\ x28") .decode ())

Bevestig item. test _ binary = = base64.b64encode (b "\ xc3\ x28") .decode ()

# technische opmerking dat de onderliggende waarde nog steeds bytes is en als zodanig wordt opgeslagen
Bevestig item. _ _ dict _ _ ["test _ binary"] = = b "\ xc3\ x28"

Universele unieke apparaatidentificatie

UUID(uuid_format: str = 'hex') Er zijn geen vereiste parameters.

  • Sqlalchemy kolom: ormar. UUID gebaseerd op sqlalchemy. CHAR (36) of sqlalchemy. CHAR (32) velden (voor respectievelijk string of hexadecimale formaten)
  • Type (voor pydantic): uuid. UUID

De parameter uuid\ _ format staat "hexadecimale" (standaard) of "string" waarden toe.

Afhankelijk van het formaat worden in de database 32 of 36 tekens gebruikt.

Voorbeeld:

  • "hexadecimaal" formaat waarde =c616ab438cce49dbbf4380d109251dce(karakter (32))
  • "string" waarde =c616ab43-8cce-49db-bf43-80d109251dce(teken (36))

Het is altijd een Python UUID wanneer het wordt geladen, dus je kunt het vergelijken en waarden tussen de twee formaten vergelijken.

opsomming

Er zijn twee manieren om opsommingen in ormar te gebruiken - >, één is om een speciaal opsommingsveld van de sqlalchemie te gebruiken. Enum kolomtype, en de andere is om de selectie op elk veld in ormar in te stellen.

Enum-velden gebruiken het databasedialectspecifieke Enum-kolomtype (indien beschikbaar), maar vallen terug naar varchar als dit veldtype niet beschikbaar is.

Selectieopties volgen altijd het geselecteerde databaseveldtype.

Welke u moet gebruiken, hangt daarom af van de backend die u gebruikt en het kolom- / gegevenstype dat u in de opsommingsvelden wilt gebruiken.

Opsomming - Velden

Enum (enum\ _ class = Type\ [Enum]) heeft een vereist enum\ _ class argument.

  • Kolom Sqlalchemie: sqlalchemie. Enum
  • Type (voor pydantic): Type\ [Enum]