IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django rest_framework et objets mongodb


Sujet :

Django Python

  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut Django rest_framework et objets mongodb
    Bonjour,

    Un projet django utilise 2 bases de données. La première relationnelle, postgreSQL. La seconde non relationnelle, mongoDB.

    Donc pour les objets de postgreSQL, les web services fonctionnent très bien.

    Pour les objets de mongoDB, je n'arrive pas à faire un web service qui utilise un objet non géré par une base et qui renvoie un json.

    Les web services sont de type Restful et la base de données MongoDB est managée avec python pymongo.

    Par exemple, j'arrive à faire cela avec fastAPI et les objets Pydantic.

    Comment feriez-vous ce type de web service ? Existe-t-il une documentation pour cela ?

    Merci pour votre aide.

    A+

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonsoir,

    Quel type de WS ? API Rest, SOAP ?

    Pour l'API Rest, on envoie une chaîne de caractères de la part du client et on récupère une chaîne sur le serveur, souvent dans un format spécifique comme JSON.

    Que se soit en PostgreSQL ou MongoDB, peu importe...

  3. #3
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonsoir,

    Quel type de WS ? API Rest, SOAP ?

    Pour l'API Rest, on envoie une chaîne de caractères de la part du client et on récupère une chaîne sur le serveur, souvent dans un format spécifique comme JSON.

    Que se soit en PostgreSQL ou MongoDB, peu importe...
    C'est une API restful puisque j'utilise django rest_framework.

    Je cherche un p'tit bout de code qui me servirait d'exemple : par exemple une requête GET ou POST.

    Il n'y a rien sur le net. J'ai bien quelque piste de recherche mais pour l'instant je galère un peu.

    Merci d'avance.

    A+

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Mister Nono Voir le message
    Il n'y a rien sur le net. J'ai bien quelque piste de recherche mais pour l'instant je galère un peu.
    Une recherche donne ce genre d'article/tuto. en 1 seconde. Et si çà ne répond pas à ce que vous cherchez, ce n'est pas avec les informations que vous donnez sur les difficultés rencontrées qu'on va pouvoir vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Une recherche donne ce genre d'article/tuto.
    Merci. A+

  6. #6
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Une recherche donne ce genre d'article/tuto. en 1 seconde. Et si çà ne répond pas à ce que vous cherchez, ce n'est pas avec les informations que vous donnez sur les difficultés rencontrées qu'on va pouvoir vous aider.

    - W
    C'est bien ce que je pensais, 1 seconde de recherche sur le net ne suffit pas à trouver la solution. En effet, cette documentation renvoie sur Djongo et non du pur MongoDB avec Pymongo.

    Et puis pour le reste tout est dans la question. Il suffit de lire...

    A+

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Pourquoi ne pas utiliser ce pourquoi Django a été créé ? C'est à dire simplifier la vie à l'aide d'applications évitant de réinventer la roue... donc djongo ?

    Après Django, ça aime bien le SQL, node js aime bien MongoDB, faut s'adapter dans les choix et solutions.

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Mister Nono Voir le message
    C'est bien ce que je pensais, 1 seconde de recherche sur le net ne suffit pas à trouver la solution. En effet, cette documentation renvoie sur Djongo et non du pur MongoDB avec Pymongo.
    Soit vous voulez utilisez django avec un backend MongoDB comme on utiliserait un backend SQL, soit vous voulez interfacer MongoDB avec django avec pymongo.

    Comme çà n'a pas été fait pour et c'est à vous d'imaginer comment interfacer les deux et écrire le code qui va avec... (et si vous ne trouvez rien sur Internet sur ce sujet peut être que çà n'a aucun intérêt).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Et bien l'application Django utilise une base de données relationnelle pour les objets ne demandant pas de grosses performances.

    Pour les données dont les requêtes nécessitent de la performance (plus de 100 millions d'enregistrements) il a été choisi MongoDB.

    Par contre Djongo a des performances exécrables, donc on utilise pymongo.

    Voilà le pourquoi des choix de la solution, choix retenus après de multiples tests.

    A+

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Mister Nono Voir le message
    Par contre Djongo a des performances exécrables, donc on utilise pymongo.
    Il y certainement d'autres backends.
    Après si vous voulez connecter Django avec pymongo directement, à vous de chercher sur Internet ce que d'autres ont déjà fait (et de trouver une solution qui vous convienne).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Il y certainement d'autres backends.
    Après si vous voulez connecter Django avec pymongo directement, à vous de chercher sur Internet ce que d'autres ont déjà fait (et de trouver une solution qui vous convienne).

    - W
    Les tests réalisés sont fiables et sans équivoque. Pour ne citer qu'un exemple, 10000000 d'enregistrements insérés en plusieurs heures avec Djongo, et quelques minutes avec pymongo.

    Pour le reste nous avons cherché comme des "forcenés" les réponses.

    Alors avant de répondre, réfléchissez... Les gens qui posent des questions ne sont pas tous des demeurés.

  12. #12
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Alors avant de répondre, réfléchissez... Les gens qui posent des questions ne sont pas tous des demeurés.
    Je vous ai juste suggéré de chercher un peu sur Internet pour voir ce que d'autres ont déjà fait. Si vous n'avez rien trouvé de facile à réutiliser, ben, tant pis pour vous.

    note: pour tester les performances de mongodb avec une quantité de données, il faut disposer d'une configuration disques/machines/réseau assez spéciale et couteuse... on cherche à optimiser les recherches (lectures) et çà fait assez de bande passante pour les écritures qu'on réalise par d'autres canaux (les sources ne sont pas des end-users).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Citation Envoyé par Mister Nono Voir le message
    Alors avant de répondre, réfléchissez... Les gens qui posent des questions ne sont pas tous des demeurés.
    Sauf que vous ne précisez pas vos tests dans votre premier message... Peut-être avez vous cherché un peu votre mal.

    Sachez que la rigueur n'est pas que dans la réponse, mais aussi dans la questions posées, et que vous auriez sans doute moins perdu votre temps à lire nos réponses si vous aviez de votre côté montré plus détails sur la problématique.

    Pymongo est logiquement plus rapide, car on utilise pas une machinerie qui fait d'autres choses et pas seulement ce que Pymongo fait, c'est une logique implacable et ne vous attendez pas à avoir mieux, car effectivement Djongo est une application qui ajoute encore d'autres fonctionnalités, ce qui sans doute doit justifier cette différence de temps.

    Sinon faîte du pure python, rien ne vous en empêche et sortez du Framework Django.

    Mais si vous êtes plusieurs à avoir cherché pendant un certains temps, c'est qu'il n'y a pas de solutions simples, voir peut-être pas du tout.

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par fred1599 Voir le message
    Pymongo est logiquement plus rapide, car on utilise pas une machinerie qui fait d'autres choses et pas seulement ce que Pymongo fait, c'est une logique implacable et ne vous attendez pas à avoir mieux, car effectivement Djongo est une application qui ajoute encore d'autres fonctionnalités, ce qui sans doute doit justifier cette différence de temps.
    Il y a des articles sur Internet qui montrent comment interfacer pymongo avec Django.
    Après, quand le PO dit:
    Pour ne citer qu'un exemple, 10000000 d'enregistrements insérés en plusieurs heures avec Djongo, et quelques minutes avec pymongo.
    Moi j'utilise plutôt mongodb pour faire des recherches dans des gros tas de données semi-structurées. Remplir la base de données, c'est du presque en temps réel depuis différents systèmes... donc des canaux privilégiés auxquels Django n'apporte pas grand chose (surtout pour avoir une API rest basique pour écrire "vite" un ou plusieurs enregistrements JSON).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par wiztricks Voir le message

    note: pour tester les performances de mongodb avec une quantité de données, il faut disposer d'une configuration disques/machines/réseau assez spéciale et couteuse... on cherche à optimiser les recherches (lectures) et çà fait assez de bande passante pour les écritures qu'on réalise par d'autres canaux (les sources ne sont pas des end-users).

    - W
    Ne vous inquiétez pas, ce n'est pas les serveurs très performants qui manquent pour les tests de performance.

    A+

  16. #16
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Mais si vous êtes plusieurs à avoir cherché pendant un certains temps, c'est qu'il n'y a pas de solutions simples, voir peut-être pas du tout.
    D'où l'utilité des forums.

  17. #17
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Moi j'utilise plutôt mongodb pour faire des recherches dans des gros tas de données semi-structurées. Remplir la base de données, c'est du presque en temps réel depuis différents systèmes... donc des canaux privilégiés auxquels Django n'apporte pas grand chose (surtout pour avoir une API rest basique pour écrire "vite" un ou plusieurs enregistrements JSON).

    - W
    Sauf que le projet doit fonctionner avec un serveur et un seul, et que ce serveur doit gérer à la fois les données relationnelles et les données non relationnelles.

    Il était aussi hors de question de se passer des fonctionnalités Django pour tout ce qui n'est pas non relationnel.

    D'où le choix suite aux spécifications du projet.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/02/2021, 18h23
  2. Réponses: 6
    Dernier message: 01/07/2020, 01h28
  3. [Python 3.X] Django Rest - Créer et mettre un objet avec un clé étrangère
    Par thorgal1612 dans le forum Django
    Réponses: 4
    Dernier message: 11/04/2020, 21h33
  4. filtrage d'objets dans la base django
    Par pat100 dans le forum Django
    Réponses: 3
    Dernier message: 08/10/2013, 12h37
  5. Django : mémoriser celui qui a créé un objet
    Par axel584 dans le forum Django
    Réponses: 4
    Dernier message: 30/05/2012, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo