Maison >base de données >tutoriel mysql >Comment SQLAlchemy peut-il réaliser des insertions groupées optimisées comme une seule instruction SQL au lieu d'insertions individuelles ?
Question :
SQLAlchemy peut-il effectuer des insertions groupées, similaires à une seule instruction SQL (INSERT INTO foo (bar) VALUES (1), (2), (3)), au lieu d'exécuter des insertions pour chaque objet ?
Réponse :
SQLAlchemy version 1.0.0 a introduit des opérations en masse, y compris des insertions et des mises à jour en masse.
En masse Insertions :
Dans la version 1.0.0 et versions ultérieures, SQLAlchemy prend en charge les insertions groupées à l'aide de la méthode Bulk_save_objects() :
s = Session() objects = [ User(name="u1"), User(name="u2"), User(name="u3") ] s.bulk_save_objects(objects) s.commit()
Ce code effectuera une seule opération d'insertion groupée pour ajouter les trois objets utilisateur.
Efficacité améliorée :
L'utilisation d'insertions groupées améliore considérablement les performances par rapport à l'exécution d'insertions séparées pour chaque objet.
Données et transactions obsolètes :
Pour maintenir la cohérence des données, utilisez des sessions avec autocommit=False. Lorsque vous validez manuellement une transaction à l'aide de session.commit(), SQLAlchemy vide les objets modifiés et récupère les enregistrements mis à jour lors des requêtes suivantes. Cependant, les modifications de la base de données provenant de sources externes peuvent toujours entraîner des problèmes de données obsolètes. Pour atténuer ce problème, envisagez d'utiliser des verrous de base de données pour garantir la cohérence transactionnelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!