Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Queries fail to return if sub-relation table has real world amount of data

Ouverte
#237 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
graphql, python, sqlalchemy

Piste de recherche

Commencez par graphene/types/resolver.py, en particulier attr_resolver, et reproduisez la requête imbriquée tableA/tableB présentée dans l’issue sur une grande table associée. Suivez comment la résolution de TableA entraîne l’accès à la relation TableB, puis vérifiez que la requête renvoie un résultat dans un délai raisonnable sans charger toute la table associée.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

In a one to many if you have a table setup as follows (a very simple one to many relationship), the GraphQL query will timeout if tableB has any real world amount of data.

TableB has about 400k records in total. Graphene-sqlalchemy will query for TableA, and then SQLAlchemy itself will try resolve the relationship of the table when graphene calls for it. When this happens the query is sent to the DB but it won't return in enough time (its pulling back ~1GB of data as it tries to pull every single field on the sub table).

I've narrowed it down to graphene/types/resolver.py

def attr_resolver(attname, default_value, root, info, **args):
    return getattr(root, attname, default_value)

Graphene captures the TableA information, and then when TableB get resolved, the root parameter is populated with the "TableA" model, which SQLAlchemy then tries to completely resolve 400k records, query times out and then fails.

query{
  tableA(first: 10){
    edges{
      node{
        tableB(first: 5){
          edges{
            node{
              fieldA
            }
          }
        }
      }
    }
  }
}
Langage dominant
Python
Étoiles
984
Forks
224
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de graphql-python/graphene-sqlalchemy

Toutes les issues de graphql-python/graphene-sqlalchemy

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.