Django est un framework Web Python populaire, et sa couche ORM (Object Relational Mapping) est l'une de ses principales fonctionnalités. ORM offre aux développeurs un moyen plus pratique de gérer les interactions avec les bases de données dans les applications Web. En raison de ses fonctions puissantes, ORM devient de plus en plus populaire parmi les développeurs. Cependant, la complexité de l’ORM peut également conduire à de mauvais choix de conception et à des problèmes de performances. Pour éviter ces problèmes, cet article présentera les meilleures pratiques de Django ORM.
Le jeu de requêtes dans Django ORM fournit une méthode de requête extrêmement puissante. Les ensembles de requêtes doivent toujours être utilisés lorsque vous devez interroger des données dans une base de données. C'est l'un des concepts principaux d'ORM. Ce concept représente une série d'objets récupérés de la base de données. Les ensembles de requêtes peuvent avoir des appels chaînés, ce qui facilite la combinaison de plusieurs filtres dans le code. Grâce aux jeux de requêtes, vous n'avez pas à vous soucier d'écrire manuellement des instructions de requête SQL, et c'est très pratique.
Ce qui suit est un exemple d'ensemble de requêtes :
books = Book.objects.filter(author__name='Jane Doe').exclude(published_at__year=2020).order_by('title')
Le code ci-dessus est utilisé pour interroger des livres dont l'auteur s'appelle « Jane Doe » et n'ont pas été publiés en 2020, triés par ordre alphabétique par titre.
2. Minimisez le nombre d'ensembles de requêtes
Chaque requête adressée à la base de données entraîne une surcharge. Par conséquent, le nombre de requêtes adressées à la base de données doit être minimisé.
Lorsque vous devez interroger plusieurs ensembles de requêtes, vous pouvez utiliser prefetch_rated et select_rated pour optimiser l'ensemble de requêtes.
3. Utilisez des propriétés ou des méthodes dans le modèle pour effectuer des calculs
L'un des avantages du framework ORM est qu'il convertit toutes les opérations de base de données en opérations sur les objets. L'utilisation de cette approche peut simplifier le code et réduire la charge de travail du développeur. Nous pouvons exécuter des propriétés ou des méthodes sur l'objet modèle pour obtenir les résultats dont nous avons besoin.
Par exemple, si vous devez ajouter une méthode pour calculer le nombre de pages dans un modèle Book :
class Book(models.Model): ... def get_num_pages(self): return self.word_count / self.words_per_page
De cette façon, nous pouvons appeler la fonction get_num_pages() et n'avons pas besoin de calculer manuellement lors de l'obtention du nombre de pages. C'est beaucoup plus rapide que d'interroger la valeur de la base de données.
4. Utilisez des index pour améliorer les performances
Les index sont un outil puissant pour optimiser les performances des requêtes. L'ajout d'index au modèle peut accélérer les requêtes. L'index peut être un index à colonne unique ou un index composé. Il peut hiérarchiser les colonnes de données fréquemment consultées qui sont souvent utilisées dans OrderBy, Where et Join pour atteindre des objectifs d'optimisation. L'établissement d'index augmentera le coût de maintenance de la table, et le coût de maintenance à long terme doit être pris en compte.
Par exemple, si vous devez interroger une certaine colonne d'un modèle (comme le titre du livre), vous pouvez ajouter une instruction order_with_respect_to dans la classe Meta du modèle, par exemple :
class Book(models.Model): title = models.CharField(max_length=255) author = models.ForeignKey('Author', on_delete=models.CASCADE) class Meta: ordering = ('title',) indexes = [ models.Index(fields=['title', 'author'], name='book_title_author_idx') ]
Le code ci-dessus implémente le tri par titre et les attributs d'auteur, et est Cette combinaison ajoute un index.
5. Faites attention aux performances des opérations de base de données
Lors de l'utilisation d'ORM, nous devons essayer de réduire le nombre d'accès à la base de données pour améliorer les performances des applications. Voici quelques moyens de réduire l'accès à la base de données :
a. 通过对数据的预加载和缓存来减少查询 b. 避免在循环中进行多次查询 c. 如果使用的是 PostgreSQL 数据库,在 signals 中加载计算后的数据,可以避免查询重复
Résumé :
Cet article répertorie quelques conseils sur les meilleures pratiques dans Django ORM. En suivant attentivement ces conseils, les développeurs peuvent éviter les erreurs courantes et les anti-modèles lors de l'utilisation des ORM. Lors de l'optimisation de votre ORM pour les performances et la vitesse avec ces recommandations, des compromis et des tests sont nécessaires pour éviter les mauvaises optimisations. Avec une conception ORM appropriée, les performances et la fiabilité des applications peuvent être considérablement améliorées.
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!