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

Python Discussion :

FastApi+ GraphQL + ORM


Sujet :

Python

  1. #1
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut FastApi+ GraphQL + ORM
    Bonjour à tous,

    Mon entreprise a décidé de faire en sorte que les différents appli web ou puissent dans une certaines mesure échanger des informations et les traiter ensuite. Cela part, évidemment, d'une certaines logique.
    Les temps d'échanges entre services seraient sans doute réduit et des travaux fastidieux pourraient évités.

    Bref après quelques réflexions nous nous sommes tournés (en test vers FastApi) pour mettre en place un noeud d'échange.
    Dans le même état d'esprit, et pour des cas spécifiques nous réfléchissons à la l'utilisation de GraphQL via Strawberry ou Graphene.

    Voici donc ma question : Nous partons sur une infra existante avec des appli parfois vielles et des BDD multiples (SqlServer, Mariadb, PostgreSQL).

    Si j'ai bien compris la démarche de GraphQL, il se réfère dans le cas des CRUD, sur une représentation en classe des schémas d'une base de données.

    Pour cela on hésite a utiliser Orator ou SqlAlchemy . Lors de la création d'une nouvelle BDD il n'y a pas de problèmes quelque soit le serveur SQL. Mais dans le cas d'une BDD existante, comment faire du "rétro-ingineering".

    Je suppose qu'il y a un moyen, mais comment construire mes classes avec Orator sur la base du schéma de la BDD.


    Là j'avoue que je bloque un peu. Est-ce que vous avez des pistes pour que je puisse faire ce que je veux ?

    Je vous remercie par avance.
    Bon WE à tous

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par FadeToBlack Voir le message
    Mon entreprise a décidé de faire en sorte que les différents appli web ou puissent dans une certaines mesure échanger des informations et les traiter ensuite.
    Encore faut-il sortir les informations pour les mettre en commun... ce qui suppose de nouveaux schémas et une remise en forme des données transférées... et le succès des ETL.

    Citation Envoyé par FadeToBlack Voir le message
    Là j'avoue que je bloque un peu. Est-ce que vous avez des pistes pour que je puisse faire ce que je veux ?
    J'ai peur que vous vous focalisiez déjà trop sur le côté outils alors que le design de la solution reste peut être à approfondir.

    - W

  3. #3
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Bonjour wiztricks,

    Effectivement plein de choses sont à faire en particulier dans les process "compliqués". Dans ces cas là, nous en sommes à la réflexion de ce qu'on veut, comment les différents services le veulent etc...., bref on est loin de débuter le dev.

    Mais il y a un petit projet qui nous sert de tests. Si c'est concluant nous pourrons nous en servir pour la réflexion sur les "gros" projets.

    Dans le cas de nos tests, il y a trois appli qui ont chacune leur BDD. On doit récupérer des infos dans deux, les triturer, les comparer avec des infos de la dernière et faire des updates le cas échéant, ou ne rien faire mais avec renvoie d'un message, genre log, de ce qui a été fait ou pas.

    Ce n'est pas vraiment compliqué dans les faits. On pourrait sans doute le faire sans FastApi and Co mais on voulait explorer de nouveaux trucs pour nous

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Salut,

    Si vous utilisez sqlalchemy, il est possible de fabriquer des metadata de tables existantes . Cependant, il y a plusieurs façons de le faire (en fonction de vos besoins)... Et plein d'articles à lire sur Internet pour se faire une idée.

    Citation Envoyé par FadeToBlack
    Dans le cas de nos tests, il y a trois appli qui ont chacune leur BDD. On doit récupérer des infos dans deux, les triturer, les comparer avec des infos de la dernière et faire des updates le cas échéant, ou ne rien faire mais avec renvoie d'un message, genre log, de ce qui a été fait ou pas.
    C'est un bon exercice... La partie la plus simple(*) est de faire le mapping entre les données existantes (il y a ou pas voire via agrégations ou dissociations). Ce qui peut être plus compliqué sera l'historique des modifications et la gestion des reprises sur incident.
    (*) comme ce sont des artifacts de données métiers, pas toujours facile de savoir ce qui correspond à quoi.

    - W

  5. #5
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Bonjour wiztricks,

    D'après ce que tu dis, il ne semble pas y avoir une librairie qui permet de faire ce mapping 'automatique' entre mes BDD et le code python ?

    Il va falloir de toutes les façons intervenir à la main ? Je n'imaginais pas un truc qui le fasse totalement automatique, mais j'espérais un minimum d'action pour nous permettre de nous concentrer sur autre chose.

    Bonne journée

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par FadeToBlack Voir le message
    D'après ce que tu dis, il ne semble pas y avoir une librairie qui permet de faire ce mapping 'automatique' entre mes BDD et le code python ?

    Il va falloir de toutes les façons intervenir à la main ?
    Il va quand même falloir un minimum d'informations pour se connecter à la BDD et savoir dans quelles tables piocher. Après coder çà en dur dans un script ou le récupérer d'un fichier de configuration...

    Mais je n'ai peut être pas compris ce que vous entendez par "mapping automatique"...

    - W

  7. #7
    Membre actif Avatar de FadeToBlack
    Homme Profil pro
    ...
    Inscrit en
    Août 2010
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : ...
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2010
    Messages : 314
    Points : 204
    Points
    204
    Par défaut
    Toutes mes excuses, en relisant mon post, je me suis rendu compte que je n'étais pas super clair. Peut-être qu'il avait été posté trop tôt.

    Ce que je voulais dire, c'est qu'évidemment, je ne m'attend pas à trouver une lib qui fasse la connexion toute seule. Il faut bien sût lui indiquer la base et sans aucun doute chaque table.

    Ce que je voulais savoir c'était s'il existait une lib en extension de SqlAlchemy ou d'Orator qui permette de créer les classes associées à mes tables, soit directement à partir du schéma de ma BDD, soit en lui indiquant chaque table.


    Un peu l'inverse des migrations : On crée les classes, associées aux tables, dans le script avec les champs etc..... puis on lance la migration qui crée la BDD.

    Ce que je voudrais, mais je ne sais pas si cela existe (en tout en PHP, je n'ai pas trouvé), une lib qui me permette de faire l'inverse.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par FadeToBlack Voir le message
    Ce que je voulais savoir c'était s'il existait une lib en extension de SqlAlchemy ou d'Orator
    sqlalchemy sait le faire "naitivement" et il y a même des bibliothèques d'extensions qui...
    ce que je vous ai déjà indiqué dans une réponse précédente en disant que vous avez l'embarras du choix (et des recherches à faire sur Internet pour comparer les différentes options en fonctions de vos besoins).

    - W

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par FadeToBlack Voir le message
    Un peu l'inverse des migrations : On crée les classes, associées aux tables, dans le script avec les champs etc..... puis on lance la migration qui crée la BDD.
    Django sait faire cela.

    On crée ce que l'on appelle des models qui définissent des classes Python. Chaque classe est un model représentant une table, avec ses champs, le typage des champs, leurs restrictions (longueur, valeur par défaut, null autorisé oui/non), les clés primaires et étrangères, etc.

    Une fois les models définis, on lance la commande de migration et Django se charge de créer la base et ses tables.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    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 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Citation Envoyé par Arioch Voir le message
    Django sait faire cela.
    N'importe quel ORM sait faire cela car les bases de données ont une durée de vie supérieure aux différentes applications métiers qui les utilisent.

    - W

Discussions similaires

  1. [ORM] Existe-t-il un framework complet ?
    Par amazircool dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/05/2007, 22h30
  2. Meilleur ORM .NET
    Par nicoo dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 21/02/2007, 21h31
  3. [Data] [ORM] execute VS find/persist !
    Par n!co dans le forum Spring
    Réponses: 1
    Dernier message: 26/12/2006, 21h05
  4. Un bon ORM en PHP, ça existe ?
    Par ePoX dans le forum Langage
    Réponses: 4
    Dernier message: 11/06/2006, 22h08

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