所以,我试图使用Python中的pyodata库来访问和下载Odata中的数据。
我试着访问北风数据,它工作。所以,我想我使用的代码是可以的。
import requests
import pyodata
url_t = 'http://services.odata.org/V2/Northwind/Northwind.svc'
# connection set up
northwind = pyodata.Client(url_t, requests.Session())
# This prints out a single value from the table Customers
for customer in northwind.entity_sets.Customers.get_entities().execute():
print(customer.CustomerID,",", customer.CompanyName)
break
# This will print out - ALFKI , Alfreds Futterkiste
我还尝试连接到excel中的Odata,看看上面的代码是否返回正确的数据,它确实返回了。
点击查看Odata连接的excel截图
现在,使用相同的代码连接到数据源,我想拉的数据没有工作:
#using this link to connect to Odata worked.
url_1 = 'https://batch.decisionkey.npd.com/odata/dkusers'
session = requests.Session()
session.auth = (user_name, psw)
theservice = pyodata.Client(url_1, session)
上面的代码返回这个错误消息(它是关于安全的吗?):
点击查看错误信息
连接到excel中的数据如下所示:
点击查看图片
我在想这可能是安全问题,阻止我访问数据,或者它可能是别的东西。如果有什么需要澄清的,请让我知道。谢谢。
第一次提问,如果有什么我没有做的,请让我知道。^ _ ^
您获得了HTTP 404 - Not Found.
服务"https://batch.decisionkey.npd.com/odata/dkusers"我无法从外部世界访问它,所以从网络的角度来看,在Excel导入的第二张图片中发生了更多的事情。
你可以暂时忘记pyodata,对于你的问题,它只是围绕HTTP网络层的包装,请求库。你需要找到一种初始化请求会话的方式,它将返回HTTP 200 OK。
北风示例服务简单明了,所以在初始化pyodata.Client
时没有问题
参考请求库文档- https://docs.python-requests.org/en/latest/user/advanced/
//sample script
url_1 = 'https://batch.decisionkey.npd.com/odata/dkusers'
session = requests.Session()
session.auth = (user_name, psw)
//??? SSL certificate needs to be provided perhaps?
//?? or maybe you are behind some proxy that Excel uses but python not.. try ping in CMD
response = session.get(url_1)
print(response.text)
可用的pyodata文档关于初始化,但是你不会发现为什么你得到HTTP 404 - https://pyodata.readthedocs.io/en/latest/usage/initialization.html