[PYTHON] Comment obtenir l'identifiant du parent avec sqlalchemy

Je veux numéroter automatiquement le parent_id

Cela est nécessaire lorsque vous souhaitez saisir des informations sur la relation parent-enfant des données dans la base de données. Par exemple, un hôtel peut avoir plusieurs chambres liées, ou un service peut être associé à plusieurs plans.

Les points importants sont les deux points suivants.

  1. Il est nécessaire d'obtenir l'ID des données parents avant de stocker les données enfants.
  2. Si une erreur se produit lors du stockage des données enfants, il est nécessaire de revenir en arrière avant de stocker les données parents.

Utilisez session.flush () pour sqlalchemy

session.add(parent_record) #Enregistrer une transaction
session.fluhs() #Enregistré dans DB (non enregistré)
parent_id = parent_record.id #Obtenir l'ID parent

Au moment de session.add (enregistrement), l'ID des données parent n'a pas été attribué, il ne peut donc pas être obtenu. En faisant session.flush (), l'ID parent sera donné et vous pourrez l'obtenir.

Pourquoi ne pas utiliser session.commit ()

session.add(parent_record)
session.commit() #Enregistré dans DB (enregistré)
parent_id = parent_record.id #Obtenir l'ID parent

Il peut être stocké dans la base de données avec session.commit () et peut être obtenu car l'ID parent est attribué. Cependant, comme la restauration mentionnée au point important 2 ne peut pas être effectuée, si le stockage échoue avec des données enfants, une situation se produira dans laquelle seules les données parentes sont stockées, ce qui prend du temps et des efforts lors de l'enregistrement des données enfants. Je vais finir. (Par exemple, attribuer manuellement un ID parent) Si possible, les insertions seront plus efficaces si les données parent et enfant sont validées dans la même session.

Recommended Posts

Comment obtenir l'identifiant du parent avec sqlalchemy
Comment mettre à jour avec SQLAlchemy?
Comment modifier avec SQLAlchemy?
Comment supprimer avec SQLAlchemy?
Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment démarrer avec Django
Comment INNER JOIN avec SQL Alchemy
Comment utiliser SQLAlchemy / Connect avec aiomysql
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
Comment obtenir les résultats de l'identifiant dans Celery
Obtenez la table dynamiquement avec sqlalchemy
Comment obtenir un utilisateur connecté avec les forms.py de Django
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
Introduction à RDB avec sqlalchemy Ⅰ
Comment lancer avec Theano
Obtenir l'ID de thread avec python
Comment obtenir le verdict de la molette de la souris avec des malédictions Python
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment entrer dans l'environnement de développement Python avec Vagrant
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Comment annuler RT avec Tweepy
Comment gérer une session dans SQLAlchemy
Python: comment utiliser async avec
Lien pour commencer avec python
Connectez-vous à plusieurs bases de données avec SQL Alchemy
Obtenez l'ID de compte AWS avec boto3
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment gérer les données déséquilibrées
Comment obtenir la version Python
Introduction à RDB avec sqlalchemy II
Comment gérer l'erreur DistributionNotFound
Comment augmenter les données avec PyTorch
Comment calculer la date avec python
Comment installer mysql-connector avec pip3
Comment installer Anaconda avec pyenv
Comment obtenir le répertoire où se trouve le EXE construit avec Pyinstaller
J'ai essayé de résumer brièvement la procédure de démarrage du développement de Django
Comment utiliser la reconnaissance visuelle pour obtenir l'ID de ligne d'une fille
Comment obtenir tout le trafic via VPN avec OpenVPN sous Linux
[Python] Comment obtenir une valeur avec une clé autre que value avec Enum
Comment effectuer un traitement arithmétique avec le modèle Django
Notes d'étape pour démarrer avec django
[Blender] Comment définir shape_key avec un script
Comment titrer plusieurs figures avec matplotlib
Comment se débarrasser des longues inclusions
Comment ajouter un package avec PyCharm
Comment obtenir une adresse IP lorsque Tornado + nginx
J'ai essayé de commencer avec Hy
Comment installer DLIB avec 2020 / CUDA activé
Comment utiliser ManyToManyField avec l'administrateur de Django
Comment utiliser OpenVPN avec Ubuntu 18.04.3 LTS
Comment utiliser Cmder avec PyCharm (Windows)