使用 zeep 访问数据库

Acessing a database using zeep

我正在尝试使用 Zeep 以编程方式从数据库 (BRENDA) 中检索信息。

代码如下。

    import zeep
    import hashlib


    wsdl = "https://www.brenda-enzymes.org/soap/brenda.wsdl"
    password = hashlib.sha256("xx".encode('utf-8')).hexdigest()
    parameters = "xxx," + password + ",ecNumber*{}#organism*{}#".format("2.7.1.2", "Homo sapiens")
    client = zeep.Client(wsdl=wsdl)
    print(client)

    km_string = client.getKmValue(parameters)

但是,我收到以下错误

AttributeError: 'Client' object has no attribute 'getKmValue'

有人可以帮我解决这个问题吗?

上面的代码在 python 2 中使用 SOAPpy 库时工作正常。但是,我无法在 python 3 中成功安装 SOAPpy,因此我尝试了 Zeep。

显示 SOAP 实现的示例代码可用 here

不是分辨率而是一些提示。

1) 对于 zeep,您需要将 .service 放在客户端和方法名称之间。正确的语法是 client.service.getKmValue(parameters)(看看 documentation

无论如何,对于 zeep,getKmValue 不存在(但它存在于 wsdl 架构中并且 SoapUi 可以看到它)。

你也可以试试py-suds,

但出于某种原因,我获得了一个调用 wsdl 的 403。

from suds.client import Client
import hashlib
client = Client("https://www.brenda-enzymes.org/soap/brenda.wsdl")

我们修复了网络服务。现在应该可以了。请查看我们网站上的 SOAP 文档。