Ga naar inhoud

Gemeenschappelijke parameters

Alle veldtypen hebben een gemeenschappelijke set parameters.

primaire sleutel

Primaire\ _ toets: bool = Onwaar - > Standaard is Onwaar.

Stel de primaire sleutelkolom op de tabel in, zodat de buitenlandse sleutel altijd verwijst naar de pk van het model.

Het wordt alleen gebruikt in SQL.

automatische verhoging

Autoincrement: bool = Primary\ _ key en type = = int - > Default True als de kolom een primaire sleutel is en het type Integer is, anders False.

Het kan alleen worden gebruikt met int / bigint-velden.

Als een veld automatisch wordt verhoogd, wordt het optioneel.

Gebruikt in SQL en Pydantic (wijzig het PK-veld in een optioneel veld voor automatisch verhogen).

Kan leeg zijn

Nullable: bool = False - > Standaard False voor alle velden behalve relationele velden.

Als de gebruiker een van de volgende zaken opgeeft, wordt deze automatisch gewijzigd in Waar:

  • Geef een standaardwaarde of -functie op
  • Biedt server\ _ standaardwaarde of -functie
  • Automatische verhoging instellen op het veld Integerprimary\ _ key

Geeft aan of een veld optioneel of vereist is, gebruikt met SQL en Pydantic.

Standaardinstellingen worden gebruikt voor pydantische en sqlalchemie, omdat dit de meest voorkomende instellingen zijn:

  • Nullable = False - geeft aan dat de databasekolom niet leeg is en dat het veld vereist is in pydantic
  • Nullable = True - geeft aan dat de databasekolom leeg is en dat het veld optioneel is in pydantic

Als u verschillende instellingen voor pydantic en database wilt instellen, zie sql\ _ nullable hieronder.

!!!Merk op dat standaard alle buitenlandse sleutels ook null kunnen zijn, wat betekent dat er geen gerelateerd model vereist is.

1
Als u de `ForeignKey`-kolom wijzigt in `nullable=False`, wordt dit vereist.

SQL\ _ nulbaar

SQL\ _ nullable: bool = nullable - > is standaard ingesteld op nullable waarden (zoals hierboven beschreven).

Geeft aan of het veld niet null is of alleen null is toegestaan in de database.

Gebruik deze instelling in combinatie met nullable alleen als u verschillende opties wilt instellen in het Pydantic-model en de database.

Een voorbeeld kan zijn om een veld in de database niet-nullable te maken, maar toe te staan dat het nullable is in pydantic (d.w.z. met behulp van de server\ _ default value). Dit voorkomt dat het veld wordt bijgewerkt naar null (zoals bij de server\ _ standaardinstelling, kunt u geen null-waarden invoegen omdat de standaardwaarde wordt gebruikt)

standaard

Standaard: Elke = Geen - > Standaard is Geen.

Als er geen andere waarde wordt doorgegeven, wordt de standaardwaarde gebruikt.

In SQL aangeroepen op invoegtijd, gebruikt tijdens Pydantic-modeldefinitie.

Als het veld een standaardwaarde heeft, wordt het optioneel.

U kunt statische waarden doorgeven of oproepen (functies, enz.)

Het wordt gebruikt in zowel SQL als Pydantic.

Voorbeeld van gebruik:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# let op het onderscheid tussen het doorgeven van een waarde en Callable pointer

# waarde
Naam: str = ormar. Tekenreeks (max _ length = 200, default = "Name")

# Merk op dat wanneer u een functie aanroept, deze geen aanwijzer is naar Callable
# een definitie als deze zou de functie aanroepen bij het opstarten en toewijzen
# het resultaat van de functie naar de standaard, dus het zal constante waarde voor alle instanties
aangemaakte _ datum: datetime.datetime = ormar. DateTime (standaard = datetime.datetime.now ())

# als u Callable-referenties wilt doorgeven (merk op dat het geen argumenten kan hebben)
# let op het ontbreken van de haakjes - > ormar zal deze functie voor u aanroepen op elk model
aangemaakte _ datum: datetime.datetime = ormar. DateTime (standaard = datetime.datetime.now)

# Callable kan een functie, ingebouwde, klasse etc.

server standaard

Server\ _ default: Elke = Geen - > Standaard is Geen.

Als er geen andere waarde wordt doorgegeven, wordt de standaardwaarde gebruikt.

In SQL aangeroepen aan de serverzijde, zodat u IE SQL functies zoals now () of queries / waarden verpakt in een sqlalchemy text () clausule kunt doorgeven.

Als het veld een server\ _ standaardwaarde heeft, wordt het optioneel.

U kunt statische waarden doorgeven of oproepen (functies, enz.)

Het wordt alleen gebruikt in SQL.

Voorbeeld van gebruik:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from datetime import datetime

import databases
import ormar
import sqlalchemy
from sqlalchemy import func, text

database = databases.Database("sqlite:///test.db")
metadata = sqlalchemy.MetaData()


class Product(ormar.Model):

    ormar_config = ormar.OrmarConfig(
        database=database, metadata=metadata, tablename="product"
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    company: str = ormar.String(max_length=200, server_default="Acme")
    sort_order: int = ormar.Integer(server_default=text("10"))
    created: datetime = ormar.DateTime(server_default=func.now())

!!! -waarschuwingsserver\ _ default accepteert str,sqlalchemy.sql.elements.ClauseElement of sqlalchemy.sql.elements.TextClause, dus als u ie integer-waarden wilt instellen, moet u deze in de sqlalchemy.text () -functie wikkelen, zoals hierboven weergegeven

!!!Tip U kunt ook een geldige SQL (dialect specifiek) in sqlalchemy.text ()

1
`func.now()` hierboven kan bijvoorbeeld worden ingeruild voor `text('(CURRENT_TIMESTAMP)')` voor sqlite backend

!!!info server\ _ default direct doorgegeven aan de sqlalchemy tabel definitie, zodat u meer kunt lezen in de server standaard sqlalchemy documentatie

naam

Naam: str = Geen - > Standaard Geen

Hiermee kunt u de alias van de kolomnaam specificeren die u wilt gebruiken.

Dit is handig voor bestaande databasestructuren die gereserveerde zoekwoorden gebruiken, of als u een andere databasenaam wilt gebruiken dan de veldnaam ormar.

Neem het volgende codefragment als voorbeeld.

Van, als een gereserveerd woord in Python, voorkomt u dat u modellen maakt met die kolomnaam.

Als u de modelnaam wijzigt in van\ _ en de parameternaam = 'from' toevoegt, wordt ormar gebruikt als de naam van de databasekolom.

1
2
 #... de rest van Model gesneden voor beknoptheid
 from _: str = ormar. String (max _ length = 15, naam = 'from')

Evenzo kunt u de namen van de vreemde sleutelkolommen in de database wijzigen met behoud van de gewenste relationele namen in ormar:

1
2
 #... de rest van Model gesneden voor beknoptheid
Album: Optioneel [Album] = ormar. ForeignKey (Album, naam = "album _ id")

index

Index: bool = Onwaar - > Standaard is Onwaar,

Stelt de index van de tabelkolom in.

Het wordt alleen gebruikt in SQL.

unieke

Uniek: bool = Onwaar

Stelt unieke beperkingen in voor tabelkolommen.

Het wordt alleen gebruikt in SQL.

Overlay\ _ pydantic\ _ type

Ormar gebruikt standaard het vooraf gedefinieerde Pydantic-veldtype, dat wordt toegepast bij het maken van modellen (dus de typehint is optioneel).

Als u wilt, kunt u uw eigen typen toepassen, die de ingebouwde typen volledig zullen vervangen. Daarom is het als gebruiker uw verantwoordelijkheid om typen aan te bieden die geldig zijn in de context van een bepaald ormar-veldtype.

Waarschuwing: u moet standaard de ingebouwde parameters gebruiken die zijn doorgegeven aan het onderliggende Pydantic-veld.

1
U kunt controleren welke argumenten worden ondersteund in de sectie veldtypen of in [Pydantisch](https://pydantic-docs.helpmanual.io/usage/schema/#field-customisation) Documenten.

!!!Gevaarlijk, het instellen van het verkeerde type pydantisch veld kan uw model breken, dus overschrijf het alleen als u weet wat u doet.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
Omdat het gemakkelijk is om de functionaliteit van ormar te doorbreken, is het `overwrite_pydantic_type`-argument niet beschikbaar op relatievelden!


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


# voorbeeld overschrijft
Klasse Overschrijftest (ormar. Model):
    ormar _ config = base _ ormar _ config (tabelnaam = "overschrijft")

    Id: int = ormar. Geheel getal (primaire _ sleutel = waar)
    mijn _ int: str = ormar. Geheel (overschrijven _ pydantic _ type = PositiveInt)
    beperking _ dict: Json = ormar. JSON (
        overwrite _ pydantic _ type = Optioneel [Json [Dict [str, int]]])