【问题标题】:python - fastapi - graphene - sql alchemy - not able to query relationship columnpython - fastapi - graphene - sql alchemy - 无法查询关系列
【发布时间】:2021-07-21 16:53:36
【问题描述】:

sqlalchemy 模型

class AssetAssignment(base_model.BaseModel, Base):
    __tablename__ = "asset_assignment"

    id = Column(Integer,ForeignKey('page_asset.asset_assignment_id'), primary_key=True, index=True, name="id")
    asset_type_id = Column(Integer,nullable=False,name="asset_type_id")
    asset_id = Column(Integer,ForeignKey('asset.id'), nullable=False,name="asset_id")
    status = Column(Integer, nullable=False, name="status", default=1)
    public=Column(Integer, nullable=True, name="public",default=1)

class Page(Base):
    __tablename__ = "page"

    id = Column(Integer, primary_key=True, index=True, name="id")
    page_id = Column(Integer,nullable=False,name="page_id")
    asset_assignment_id = Column(Integer, nullable=False,name="asset_assignment_id")
    asset_assignment=relationship("AssetAssignment",lazy='joined',uselist=True)

尝试通过graphql访问以上内容:

class Asset(SQLAlchemyObjectType):
    class Meta:
        model = Page
        interfaces = (relay.Node, )

class Query(graphene.ObjectType):
    all_assets= graphene.List(Asset)
  def resolve_all_assets(self,info):
        query = Asset.get_query(info)  # SQLAlchemy query
        return query.all()

结果没有“asset_assignment”字段,它是一个关系列。

Graphql 查询

{
  allAssets{
   asset_assignment
  }
}

结果

{
  "data": null,
  "errors": [
    {
      "message": "Cannot query field \"asset_assignment\" on type \"Asset\". Did you mean \"assetAssignmentId\"?",
      "locations": [
        {
          "line": 39,
          "column": 4
        }
      ]
    }
  ]
}

【问题讨论】:

    标签: python sqlalchemy fastapi graphene-python


    【解决方案1】:

    SQLAlchemyConnectionField 帮助获取关系列

    all_assets=SQLAlchemyConnectionField(Page.connection)

    【讨论】:

      猜你喜欢
      • 2021-05-31
      • 2013-03-31
      • 2022-07-13
      • 2023-01-26
      • 2021-12-03
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      相关资源
      最近更新 更多