Paramètres communs
Tous les types de champs ont un ensemble commun de paramètres.
clé primaire
Primary_key: bool = False -> est False par défaut.
Définit la colonne de clé primaire sur la table, la clé étrangère faisant toujours référence au pk du modèle.
Utilisé uniquement en sql.
Augmentation automatique
Incrémentation automatique: bool = Primary_key et type == int -> True par défaut si la colonne est une clé primaire et est de type Integer, False sinon.
Il ne peut être utilisé qu 'avec le champ int/bigint.
Si le champ a un incrément automatique, il devient facultatif.
Utilisé dans sql et pydantic (changer le champ pk en champ optionnel pour l'incrémentation automatique).
Peut être vide
NULL: bool = False -> False par défaut pour tous les champs sauf les champs de relation.
Il passe automatiquement à True si l'utilisateur fournit l'un des éléments suivants:
- Fournir une valeur par défaut ou une fonction
- La valeur ou la fonction server_default est fournie
- Définir l'incrément automatique sur le champ Integerprimary_key
Spécifie si le champ est facultatif ou obligatoire, utilisé avec sql et pydantic.
Par défaut, pour pydantic et sqlalchemy, car ce sont les paramètres les plus courants:
- nullable=False -indique que la colonne de base de données n'est pas vide et que le champ est requis dans pydantic
- nullable=True -signifie que la base de données est répertoriée comme vide et que le champ est facultatif en pydantique
Si vous souhaitez définir des paramètres différents pour pydantic et la base de données, consultez sql_nullable ci-dessous.
!!!Notez que toutes les clés étrangères peuvent également être nulles par défaut, ce qui signifie qu 'aucun modèle de corrélation n'est nécessaire.
1 | |
sql_nullable
sql_nullable: bool = nullable -> est la valeur nullable par défaut (comme décrit ci-dessus).
Spécifie si le champ n'est pas vide ou autorisé à être vide dans la base de données.
Utilisez ce paramètre avec nullable uniquement si vous souhaitez définir différentes options dans votre modèle pydantique et votre base de données.
Un exemple d'utilisation pourrait être de rendre un champ dans une base de données non vide, mais de permettre au champ d'être vide dans pydantic (même avec la valeur server_default). cela empêchera le champ d'être mis à jour à vide (comme avec le paramètre server_default, vous ne pouvez pas insérer une valeur vide car la valeur par défaut sera utilisée).
par default
Valeur par défaut: Any = None -> None par défaut.
Si aucune autre valeur n'est passée, la valeur par défaut est utilisée.
Dans le sql appelé à l'insertion, utilisé lors de la définition du modèle pydantique.
Si le champ a une valeur par défaut, il devient facultatif.
Vous pouvez passer des valeurs statiques ou appelables (fonctions, etc.)
Il est utilisé à la fois en sql et en pydantic.
Exemples d'utilisation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Serveur par défaut
server_default: Any = None -> est None par défaut.
Si aucune autre valeur n'est passée, la valeur par défaut est utilisée.
Dans le sql appelé côté serveur, vous pouvez donc passer une fonction ie sql (comme now() ou une requête/valeur enveloppée dans une clause sqlalchemy text()).
Si le champ a la valeur server_default, il devient facultatif.
Vous pouvez passer des valeurs statiques ou appelables (fonctions, etc.)
Utilisé uniquement dans SQL.
Exemples d'utilisation:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
!!! warning server_default accepte str,sqlalchemy.sql.elements.ClauseElement ou sqlalchemy.sql.elements.TextClause, donc si vous voulez définir une valeur entière ie, vous devez l'envelopper dans la fonction sqlalchemy.text(), comme indiqué ci-dessus.
!!!Conseil Vous pouvez également passer un sql valide (spécifique au dialecte) contenu dans sqlalchemy.text()
1 | |
!!!info server_default est passé directement à la définition de la table sqlalchemy, vous pouvez donc en savoir plus dans la documentation par défaut de sqlalchemy du serveur.
Le nom
name: str = None -> None par défaut
Permet de spécifier l'alias de nom de colonne à utiliser.
Utile pour les structures de base de données existantes qui utilisent des mots-clés réservés, ou si vous souhaitez utiliser un nom de base de données différent du nom du champ ormar.
Prenez l'extrait de code suivant, par exemple.
from, en tant que mot réservé en python, vous empêche de créer un modèle avec ce nom de colonne.
Changer le nom du modèle en from_et ajouter l'argument name='from' entraînera l'utilisation de from par ormar comme nom de colonne de base de données.
1 2 | |
De même, vous pouvez modifier le nom de la colonne de clé étrangère dans la base de données tout en conservant le nom de la relation souhaitée dans ormar:
1 2 | |
Index des index
index: bool = False -> False par défaut,
Définit l'index des colonnes de la table.
Utilisé uniquement en sql.
Unique en son genre
Unique: bool = False
Définissez une contrainte unique pour les colonnes de la table
Utilisé uniquement en sql.
Remplacer_pydantic_type
Par défaut, ormar utilise un type de champ pydantique prédéfini, qui est appliqué à la création de modèle (l'indication de type est donc facultative).
Vous pouvez appliquer vos propres types si vous le souhaitez, ce qui remplacera complètement les types intégrés. il est donc de votre responsabilité en tant qu 'utilisateur de fournir des types qui fonctionnent dans le contexte d'un type de champ ormar donné.
Attention: par défaut, vous devez utiliser les paramètres intégrés passés au champ pydantique sous-jacent.
1 | |
!!!Un champ pydantique de type incorrect de paramètres dangereux peut casser votre modèle, alors ne l'écrasez que si vous savez ce que vous faites.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |