我尝试连接SOAP Web服务并使用pandas放入表中。
Zeep给我这个清单:
[{
'ssPeca': '103',
'ssQtd': '1',
'ssUn': 'un'
}, {
'ssPeca': '291A',
'ssQtd': '8',
'ssUn': 'un'
}, {
'ssPeca': '406B',
'ssQtd': '8',
'ssUn': 'un'
}]
我的代码是:
client = zeep.Client(wsdl=wsdl)
pecas=client.service.TabelaPecas("C-160","CR")
pd.DataFrame.from_dict(pecas)
并且该代码生成了这个:
0 1 2
0 ssPeca ssQtd ssUn
1 ssPeca ssQtd ssUn
2 ssPeca ssQtd ssUn
但我想要这个:
0 1 2
0 103 1 un
1 291A 8 un
2 406B 8 un
任何人都可以帮忙吗?我只是python的初学者。
答案 0 :(得分:3)
Zeep具有将响应转换为python对象的功能。例如:命令字典。
您应该使用:
from zeep.helpers import serialize_object
client = zeep.Client(wsdl=wsdl)
pecas=client.service.TabelaPecas("C-160","CR")
pecas = serialize_object(pecas)
pd.DataFrame(pecas)
来源:http://docs.python-zeep.org/en/latest/helpers.ht
编辑:修正了错字,谢谢voglster
答案 1 :(得分:0)
您可以将数据(dicts列表)直接传递给pd.DataFrame。它应该看起来像你想要的那样。
>>> data = [{
... 'ssPeca': '103',
... 'ssQtd': '1',
... 'ssUn': 'un'
... }, {
... 'ssPeca': '291A',
... 'ssQtd': '8',
... 'ssUn': 'un'
... }, {
... 'ssPeca': '406B',
... 'ssQtd': '8',
... 'ssUn': 'un'
... }]
>>> pd.DataFrame(data=data)
ssPeca ssQtd ssUn
0 103 1 un
1 291A 8 un
2 406B 8 un
答案 2 :(得分:0)
它的工作原理如下:
public InputStream getImage(long anIndex){
InputStream binaryStream = null;
try{Statement stmt = null;
int intIndex = (int) anIndex;
//connect to database
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:mem:Users", "sa", "");
System.out.println("Connected database successfully...");
//insert data
System.out.println("Getting expenses from the database...");
stmt = conn.createStatement();
ResultSet resultSet = stmt.executeQuery("SELECT * FROM EXPENSES");
Blob imageBlob = resultSet.getBlob(intIndex);
binaryStream = imageBlob.getBinaryStream(0, imageBlob.length());
}
catch (Exception e){
}
return binaryStream;
}
可能是因为我是python的初学者,可能这是一种解决方法,但可以使用zeep响应。使用带有列表的pd.DataFrame但不能使用zeep响应。
也许有一天会帮助像我这样的初学者。