使用 zeep 访问 BRENDA 时出现神秘错误
Mysterious error when accessing BRENDA with zeep
我正在尝试使用 SOAP 从 BRENDA 获取所有人类 Kcat 和 KM(我猜技术上是 Python3)。我使用了这段代码,它遵循给出的示例代码 here:
from zeep import Client
import hashlib
wsdl = "https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl"
password = hashlib.sha256("password".encode("utf-8")).hexdigest()
client = Client(wsdl)
parameters = (
"email@email.com",
password,
"organism*Homo sapiens"
)
resultString = client.service.getKcatKmValue(*parameters)
它给了我错误 "Missing element organism (getKcatKmValue.organism)"
我不清楚我做错了什么。任何见解将不胜感激。
如果你运行这个命令检查methods/operations的定义:
python -mzeep https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl
可以看到getKcatKmValue
的定义如下:
getKcatKmValue(email: xsd:string, password: xsd:string, ecNumber: xsd:string, organism: xsd:string, kcatKmValue: xsd:string, kcatKmValueMaximum: xsd:string, substrate: xsd:string, commentary: xsd:string, ligandStructureId: xsd:string, literature: xsd:string) -> return: ns0:ArrayOfKcatKmValues
因此必须提供所有这些参数,而您没有传入这些参数 parameters
因此出现错误。
a dict
也可以传递给操作,以便更好地了解传递的参数,如下所示:
parameters = {
'email': "email@email.com",
'password': password,
'ecNumber': ecNumber,
'organism': "organism*Homo sapiens",
'kcatKmValue': kcatKmValue,
'kcatKmValueMaximum': kcatKmValueMaximum,
'substrate': substrate,
'commentary': commentary,
'ligandStructureId': ligandStructureId,
'literature' : literature
}
# then pass dict as follows:
resultString = client.service.getKcatKmValue(**parameters)
希望这对您有所帮助。
我正在尝试使用 SOAP 从 BRENDA 获取所有人类 Kcat 和 KM(我猜技术上是 Python3)。我使用了这段代码,它遵循给出的示例代码 here:
from zeep import Client
import hashlib
wsdl = "https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl"
password = hashlib.sha256("password".encode("utf-8")).hexdigest()
client = Client(wsdl)
parameters = (
"email@email.com",
password,
"organism*Homo sapiens"
)
resultString = client.service.getKcatKmValue(*parameters)
它给了我错误 "Missing element organism (getKcatKmValue.organism)"
我不清楚我做错了什么。任何见解将不胜感激。
如果你运行这个命令检查methods/operations的定义:
python -mzeep https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl
可以看到getKcatKmValue
的定义如下:
getKcatKmValue(email: xsd:string, password: xsd:string, ecNumber: xsd:string, organism: xsd:string, kcatKmValue: xsd:string, kcatKmValueMaximum: xsd:string, substrate: xsd:string, commentary: xsd:string, ligandStructureId: xsd:string, literature: xsd:string) -> return: ns0:ArrayOfKcatKmValues
因此必须提供所有这些参数,而您没有传入这些参数 parameters
因此出现错误。
a dict
也可以传递给操作,以便更好地了解传递的参数,如下所示:
parameters = {
'email': "email@email.com",
'password': password,
'ecNumber': ecNumber,
'organism': "organism*Homo sapiens",
'kcatKmValue': kcatKmValue,
'kcatKmValueMaximum': kcatKmValueMaximum,
'substrate': substrate,
'commentary': commentary,
'ligandStructureId': ligandStructureId,
'literature' : literature
}
# then pass dict as follows:
resultString = client.service.getKcatKmValue(**parameters)
希望这对您有所帮助。