使用pyodata,如何列出查询实体的所有可用属性?

huangapple go评论122阅读模式
英文:

Using pyodata, how do I list all available properties of a queried Entity?

问题

我想要动态列出使用PyOData包从odata实体中获取所有可用属性的方法。

以下是我想要做的事情:

  1. service = pyodata.Client(SERVICE_URL, session)
  2. positions = service.entity_sets.TRLPositionSet.get_entities().select('Prop1,Prop2').execute()
  3. for p in positions:
  4. # 如何实现下面的get_properties函数?
  5. properties = get_properties(p)
  6. for prop in properties:
  7. print(prop.name, getattr(p, prop.name))

我该如何实现get_properties(p)函数以使其返回一个列表['Prop1', 'Prop2']

英文:

I want to dynamically list all available properties from an odata Entity using PyOData package.

Here is what I'd like to do:

  1. service = pyodata.Client(SERVICE_URL, session)
  2. positions = service.entity_sets.TRLPositionSet.get_entities().select('Prop1,Prop2').execute()
  3. for p in positions:
  4. # how to implement get_properties below?
  5. properties = get_properties(p)
  6. for prop in properties:
  7. print(prop.name, getattr(p, prop.name)

How would I implement the get_properties(p) function to make it return a list ['Prop1', 'Prop2']?

答案1

得分: 1

翻译结果如下:

  1. 看看这里
  2. https://github.com/SAP/python-pyodata/issues/53#issuecomment-533261246
  3. for es in client.schema.entity_sets:
  4. print(es.name)
  5. properties = es.entity_type.properties()
  6. for prop in es.entity_type.key_properties:
  7. print(f' K {prop.name}({prop.type.name})')
  8. properties.remove(prop)
  9. for prop in properties:
  10. print(f' + {prop.name}({prop.type.name})')
  11. for prop in es.entity_type.nav_properties:
  12. print(f' + {prop.name}({prop.to_role.entity_type_name})')
  13. 在我的情况下我必须使用`es._entity_type`

请注意,我已经将代码中的 "proprties" 更正为 "properties",并将 "key_proprties" 更正为 "key_properties",以及 "nav_proprties" 更正为 "nav_properties",以匹配正确的Python语法。

英文:

Take a look here:
https://github.com/SAP/python-pyodata/issues/53#issuecomment-533261246

for es in client.schema.entity_sets:
print(es.name)

  1. proprties = es.entity_type.proprties()
  2. for prop in es.entity_type.key_proprties:
  3. print(f' K {prop.name}({prop.typ.name})')
  4. proprties.remove(prop)
  5. for prop in proprties:
  6. print(f' + {prop.name}({prop.typ.name})')
  7. for prop in es.entity_type.nav_proprties:
  8. print(f' + {prop.name}({prop.to_role.entity_type_name})')

In my case I had to use es._entity_type

huangapple
  • 本文由 发表于 2023年6月22日 07:31:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/76527748.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定