繁体   English   中英

如何在Python中使用python-pyodata模块

[英]How to use the python-pyodata module in Python

我无法使用pyodata从端点检索数据。 我在visual studio 2017中创建了一个项目,在我的浏览器上运行的示例url是http://localhost:51701/Striker.svc/Answers即使使用请求库进行测试,我也能获得正确的输出,但是下面的代码打印出来一个空列表:

import requests
import pyodata

SERVICE_URL = 'http://localhost:51701/Striker.svc/'

# Create instance of OData client
client = pyodata.Client(SERVICE_URL, requests.Session())
print(client.schema.entity_sets)

我测试了在线托管的其他样本网址,他们都打印出实体集,因此不确定我缺少什么

我维护包,我们在几周前修复了XML命名空间的问题: https//github.com/SAP/python-pyodata/commit/dd467e6ad58588d8c6edaae6b99967eb8cfe4c7c

我建议你升级到最新版本的pyodata。 如果您仍然遇到问题,可以指示pyodata使用您的命名空间: https ://pyodata.readthedocs.io/en/latest/usage/initialization.html#dealing-with-errors-during-parsing-metadata

你可以在$ metadata的乞讨时使用名称空间URI

<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
  <edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="1.0" m:MaxDataServiceVersion="3.0">
     <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="NorthwindModel">

上面的XML片段是从Microsoft的Northwind服务获得的,默认情况下支持它,服务器这里只是演示目的。 在您的python代码中,您将编写以下内容:

from pyodata.v2.model import Config

namespaces = {
    'edmx': 'http://schemas.microsoft.com/ado/2007/06/edmx',
    'edm': 'http://schemas.microsoft.com/ado/2008/09/edm'
}

custom_config = Config(xml_namespaces=namespaces)

northwind = pyodata.Client(SERVICE_URL, requests.Session(), config=custom_config)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM