Python 按父级筛选 OData 实体 - 请求库

Python Filtering OData Entity by Parent - Requests Library

提问人:krewsayder 提问时间:11/17/2023 最后编辑:Brian Tompsett - 汤莱恩krewsayder 更新时间:11/21/2023 访问量:35

问:

赏金将在 4 天后到期。这个问题的答案有资格获得 +50 声望赏金。Krewsayder希望引起人们对这个问题的更多关注

我有一个 OData API,我正在尝试使用 Python 请求库进行查询。我正在尝试根据父表过滤表以进行增量数据拉取。子表不使用 ,但我可以从父表获取此日期作为父表的更改,即使更改在子表中也是如此。请注意,在我的示例中,是 的父实体。last_update_datelast_updated_dateemployeesemployee_texts

我的代码如下所示:

data = requests.get(
    endpoint_url + "employee_texts"
    , auth=(api_username, api_password)
    , params={
        "$filter": "employees/LastModifiedDate gt 2023-11-15T00:00:00.00Z",
        "$format": "json"
    }
    , verify=True
)

如果我运行它,我会收到以下错误:

{'error': {'code': '',
'message': '值不能为空。\r\n参数名称: type'}}

请注意,此代码按预期工作:

data = requests.get(
    endpoint_url + "employees"
    , auth=(api_username, api_password)
    , params={
        "$filter": "LastModifiedDate gt 2023-11-15T00:00:00.00Z",
        "$format": "json"
    }
    , verify=True
)
python-requests 过滤 odata

评论


答:

1赞 user2250152 11/21/2023 #1

如果是一个集合,那么你需要在查询中使用运算符。employeesany$filter

data = requests.get(
    endpoint_url + "employee_texts"
    , auth=(api_username, api_password)
    , params={
        "$filter": "employees/any(e:e/LastModifiedDate gt 2023-11-15T00:00:00.00Z)",
        "$format": "json"
    }
    , verify=True
)

评论

1赞 krewsayder 11/27/2023
因此,事实证明,相关表的导航属性被父列设置为 false。我想这意味着我不走运