Insérer des données dans une base de données
La méthode suivante vous permet d'insérer des données dans une base de données.
-
Create (**kwargs) -> Modèle
-
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool] -
update_or_create(**kwargs) -> Model -
bulk_create(objects: List[Model]) -> None -
Modèle*Model.save () Méthode*Modèle.upsert() Méthode* Model.save_lated() Méthode
-
Query Set Agent* La méthode
QuerysetProxy.create(**kwargs)* La méthodeQuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs)* La méthodeQuerysetProxy.update_or_create(**kwargs)
Création
Création (**kwargs): -> Modèle
Créez une instance de modèle, enregistrez-la dans la base de données et renvoyez le modèle mis à jour (remplissez pk si elle n'est pas transmise et que l'incrément automatique est défini).
Les kwargs autorisés sont les noms de champ de modèle et le type de valeur correct.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Une autre approche consiste à diviser la création et la persistance du modèle.
1 2 | |
Tip
Obtenir ou créer
get_or_create(_defaults: Optional[Dict[str, Any]] = None, **kwargs) -> Tuple[Model, bool]
Créer et obtenir une combinaison de méthodes.
Essayez d'obtenir une ligne qui répond aux critères, et si une exception NoMatch est levée, une nouvelle ligne est créée avec les kwargs et_defaults donnés.
Lorsqu 'un dictionnaire_defaults est fourni, les valeurs définies dans_defaults seront toujours définies, y compris les valeurs fournies explicitement par override. IE get_or_create(_defaults: {"title": "I win"}, title="never used") utilisera toujours "J'ai gagné" comme titre, que vous fournissiez ou non votre propre valeur dans kwargs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
!!!Attention Bien qu 'il s'agisse d'une ligne équivalente dans la base de données, l'album et l'album 2 dans l'exemple ci-dessus sont 2 objets python différents! La mise à jour de l'un d'eux n'actualisera pas le second tant que vous n'aurez pas chargé explicitement () de nouvelles données de la base de données.
Notez que si vous souhaitez créer un nouvel objet, vous devez soit passer la valeur de la colonne pk, soit la colonne pk doit être réglée sur incrémentation automatique.
Mettre à jour ou créer
update_or_create(**kwargs) -> Model
Mettez à jour le modèle ou créez un nouveau modèle s'il n'y a pas de correspondance dans la base de données.
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
Notez que si vous souhaitez créer un nouvel objet, vous devez soit passer la valeur de la colonne pk, soit la colonne pk doit être réglée sur incrémentation automatique.
Créé par batch
bulk_create(objects: List["Model"]) -> None
Permet de créer plusieurs objets à la fois.
Une liste valide des objets modèles doit être transmise.
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | |
Approche modèle
Chaque instance de modèle dispose d'un ensemble de méthodes pour sauvegarder, mettre à jour ou se charger.
Sauver
Vous pouvez créer un nouveau modèle en utilisant la méthode QuerySet.create() ou en initialisant le modèle à un modèle pydantique normal et en appelant la méthode save().
!!!tip En savoir plus sur la méthode save() dans models-save
Mise à jour insérée
C'est un proxy pour la méthode save() ou update(**kwargs) du modèle. si pk n'est pas défini, la méthode save() est appelée.
!!!tip Lire plus sur la méthode upsert() dans models-upsert
Sauvegarder en relation
Une méthode parcourt toutes les relations du modèle qui l'a appelée et appelle la méthode upsert() sur chaque modèle non enregistré.
!!!tip En savoir plus sur la méthode save_lated() dans models-save-lated
La méthode QuerysetProxy
Lorsque vous accédez directement au champ ManyToMany associé, ainsi qu'à la clé ReverseForeignKey, une liste des modèles associés est renvoyée.
Mais en même temps, il expose un sous-ensemble de l'API QuerySet, de sorte que vous pouvez filtrer, créer, sélectionner des modèles pertinents, etc. directement à partir du modèle parent.
Créer des
Exactement comme la fonction de création ci-dessus, mais vous permet de créer des objets associés à partir de l'autre extrémité de la relation.
!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy
Obtenir ou créer
Exactement comme la fonction get_or_create ci-dessus, mais vous permet d'interroger ou de créer des objets associés de l'autre côté de la relation.
!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy
Mettre à jour ou créer
Exactement comme la fonction update_or_create ci-dessus, mais vous permet de mettre à jour ou de créer des objets associés de l'autre côté de la relation.
!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy