【问题标题】:Acessing a database using zeep使用 zeep 访问数据库
【发布时间】:2019-06-09 09:32:34
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 您好,抱歉,我没有解决方案,但想知道您是否找到了解决方案?我从 BRENDA 那里遇到了类似的问题,而 SOAPpy 对我不起作用,所以我希望改用 zeep。

标签: api zeep


【解决方案1】:

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

【讨论】:

  • 非常感谢您的更新。我尝试了为 python3 提供的示例代码。我无法成功运行它。出现如下错误,”self._sslobj.do_handshake() ConnectionResetError: [WinError 10054] 现有连接被远程主机强行关闭`aise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))
  • 我必须在示例代码password = hashlib.sha256(str("password").encode('utf-8')).hexdigest() 的这一行中进行更改,如果不包含encode('utf-8'),我会收到编码错误。任何关于如何进行的建议都会非常有帮助`
  • 是的,需要编码。我忘了更新文档中的行。马上就能搞定。
  • ConnectionResetError还会出现吗?
  • 请再试一次。
【解决方案2】:

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

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多