Maison  >  Article  >  développement back-end  >  Conseils de prise en charge multi-bases de données dans le framework Django

Conseils de prise en charge multi-bases de données dans le framework Django

WBOY
WBOYoriginal
2023-06-18 10:52:401806parcourir

Django est un framework Web Python populaire. Son excellent mécanisme ORM (Object Relational Mapping) permet aux développeurs d'exploiter facilement des bases de données. Cependant, dans certains projets réels, plusieurs bases de données doivent être connectées. À ce stade, certaines compétences sont nécessaires pour garantir la stabilité et l'efficacité du développement du projet.

Dans Django, le support multi-bases de données est basé sur les fonctions fournies par le framework Django lui-même. Ici, nous présenterons quelques conseils de prise en charge multi-bases de données pour vous aider à mieux faire face aux situations multi-bases de données dans le développement de Django.

La première étape consiste à configurer plusieurs bases de données

Pour activer la prise en charge multi-bases de données du framework Django, vous devez d'abord écrire du code de fichier de configuration. Dans Django, nous pouvons le configurer dans le fichier settings.py. Le code spécifique est le suivant :

DATABASES = {

'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'default_database',
    'USER': 'user_name',
    'PASSWORD': 'user_password',
    'HOST': 'localhost',
    'PORT': '5432',
},
'other_db': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'other_database',
    'USER': 'user_name',
    'PASSWORD': 'user_password',
    'HOST': 'localhost',
    'PORT': '5432',
},

}

Il s'agit d'un fichier de configuration contenant deux bases de données. Parmi elles, on peut distinguer différentes bases de données via default et other_db. Chaque base de données doit spécifier des paramètres tels que ENGINE (nom du pilote de base de données), NAME (nom de la base de données), USER (nom d'utilisateur), PASSWORD (mot de passe), HOST (nom d'hôte) et PORT (numéro de port).

Dans le développement réel, vous devrez peut-être vous connecter à plusieurs types de bases de données, telles que MySQL, SQLite, Oracle, SQL Server, etc. Dans ces cas, vous pouvez suivre la documentation de Django pour la configuration.

La deuxième étape consiste à utiliser plusieurs bases de données dans le modèle

Dans Django, un modèle est le moyen de stocker des données dans une base de données. Afin d'utiliser une base de données différente, nous devons spécifier la connexion à la base de données spécifique dans le modèle.

Supposons que nous ayons deux modèles, l'un est User et l'autre est Product:

class User(models.Model):

name = models.CharField(max_length=255)

class Product(models.Model):

name = models.CharField(max_length=255)
user = models.ForeignKey(User, on_delete=models.CASCADE)

Ici, nous utilisons models.ForeignKey to Product et les modèles utilisateur sont connectés. Maintenant, nous devons enregistrer le modèle User dans une base de données et le modèle Product dans une autre base de données. Dans Django, nous devons spécifier une base de données pour chaque modèle de données :

class User(models.Model):

name = models.CharField(max_length=255)

class Meta:
    using = 'default'

class Product(models.Model):

name = models.CharField(max_length=255)
user = models.ForeignKey(User, on_delete=models.CASCADE)

class Meta:
    using = 'other_db'

Dans cet exemple, nous spécifions le modèle User comme connexion par défaut , spécifiez le modèle de produit comme connexion other_db. Ces noms de bases de données sont les mêmes que ceux configurés précédemment.

Il convient de noter que lors de l'utilisation de plusieurs bases de données, nous devons spécifier la base de données pour chaque modèle. Sinon, Django utilisera par défaut la connexion à la base de données, ce qui peut entraîner des problèmes dans l'application.

La troisième étape consiste à gérer plusieurs bases de données dans la vue

Dans la vue, nous devrons peut-être utiliser plusieurs connexions à la base de données. Pour gérer plusieurs bases de données dans une vue, nous devons suivre les étapes suivantes.

Tout d'abord, vous devez importer les liens de base de données :

à partir des connexions d'importation django.db

Cette instruction d'importation renverra une classe contenant tous les liens de base de données.

Ensuite, nous devons créer une connexion à la base de données lisible et inscriptible. Il existe deux manières de créer une connexion à la base de données :

  1. connections['default'] : utilisez la connexion à la base de données par défaut.
  2. connections['other_db'] : utilisez une connexion à une base de données spécifique.

Dans cet exemple, nous utiliserons la connexion other_db :

def my_view(request):

with connections['other_db'].cursor() as cursor:
    cursor.execute('SELECT * FROM some_table')
    row = cursor.fetchone()

return HttpResponse(str(row))

Ici, nous avons utilisé le gestionnaire de contexte with pour gérer la connexion à la base de données. Nous utilisons la méthode curseur() pour créer un objet curseur pour interroger la base de données et utilisons exécuter() pour exécuter l'instruction de requête. Enfin, nous utilisons la méthode fetchone() pour obtenir les résultats de la requête.

Comme vous pouvez le voir dans l'exemple ci-dessus, nous pouvons utiliser l'instruction with dans la vue pour contrôler la connexion à la base de données. De cette façon, nous pouvons basculer entre différentes bases de données.

Résumé

Dans Django, un bon support multi-bases de données est fourni. Vous pouvez utiliser différents types de bases de données (telles que MySQL, PostgreSQL, SQLite, etc.) pour interagir dans un projet, et vous pouvez utiliser différentes bases de données issues de différents modèles. En utilisant rationnellement les connexions aux bases de données, vous pouvez mieux contrôler le processus d'interaction des données et éviter les problèmes, améliorant ainsi la stabilité et l'efficacité du développement du projet.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn