使用自定义类型 SQLAlchemy 过滤石墨烯

问题描述 投票:0回答:0

我想检索部门及其员工,在两个表上都使用过滤器

像这样

SELECT d.name, e.name
FROM departments d
JOIN employee e on d.id = e.department_id
WHERE d.name = "Finance" and e.name like '%m%'

这是我的 graphql 查询

{
  findDepartment(name:"Finance", employee:"m") {
    id
    name
    employees{
      name
    }
  }
}

这是我的架构查询

class Query(graphene.ObjectType):
    node = relay.Node.Field()

    #filter query
    find_department = graphene.List(Department, name = graphene.String(), employee = graphene.String())
    def resolve_find_department(self, info, name, employee):
        # like_query = '%{0}%'.format(employee)

        department = db_session.query(DepartmentModel)\
                                .filter(DepartmentModel.name == name)

        return department
    

我的

Department
模型是

class Department(SQLAlchemyObjectType):
    class Meta:
        model = DepartmentModel
        interfaces = (relay.Node, )

    employees = graphene.List(Employee)
    def resolve_employees(name, employee):
        like_query = '%{0}%'.format(employee)
        print(like_query)
        return db_session.query(EmployeeModel)\
                        .join(DepartmentModel)\
                        .filter(EmployeeModel.name.ilike(like_query))

我发现的问题是

  1. 我的
    employee
    中的
    resolve_employees
    参数不是我在查询中传递的值
  2. 如果我尝试硬编码
    like_query
    值,它将显示不属于该部门的员工

谁能告诉我哪里出错了? 谢谢

python graphene-python graphene-sqlalchemy
© www.soinside.com 2019 - 2024. All rights reserved.