A:天软的默认编码是GBK,python的默认编码为Unicode,交互过程中字符串需要转码后才能正常显示。
当天软返回的结果为数组时,按普通的编码解码方式,需要对每个单元格的字符串逐个进行转码,从而引起交互效率低下的问题。
此时,可借助Json串解决该繁琐问题,其过程为:将天软的结果集转换为Json串后再传入到python中,再调用python中的json模块对json串进行转换。
这种方式相比于使用循环逐个转码,会更简便高效,当然,若交互的结果集较小,就不存在效率的问题。
其它相关的方式可
交互文档FAQ:
2019-05-08-应用专题-第三方交互07:天软平台和PYTHON的交互
及FAQ:
Q:与python3交互中字符串转gbk的问题
注:相较于将原始数据送入python,Json串转传输方式的效率有显著提升,且由于数据格式压缩,同时一次性传输的数据量也可以更多,所以我们推荐此类方式进行处理。
其具体做法与使用案例如下:
相关函数简介:
天软中:
天软函数ExportJsonString(data:Any):String,将天软数据结构转换为Json串。
python中,加载Json模块,调用其loads方法将json串转换为python数据结构。
应用范例:
范例01:python中调用天软函数
天软代码:封装函数getdata
//将上证指数日线行情转换成标准的JSON串
Function getdata()
begin
setsysparam(PN_Cycle(),cy_day());
data:=select * from markettable datekey 20200721T to 20200721T+0.999 of 'SH000001' end;
t:=exportjsonstring(data);
return t;
end
Python代码:
import sys
sys.path.append(天软安装目录)
import json
import TSLPy3 as ts
data=ts.RemoteCallFunc("getdata",[],{})[1]
if data:
print('数据传输成功')
d=json.loads(data)
print(d)
else:
print('数据传输失败')
范例02:python中执行天软脚本
//提取一段时间内的交易明细
import sys
sys.path.append(天软安装目录)
import json
import TSLPy3 as ts
s="""
data:=select * from tradetable datekey 20200721.1020T to 20200721.1025T of 'SH000001' end;
t:=exportjsonstring(data);
return t;
""";
data = TSLPy3.RemoteExecute(s,{})
print(json.loads(data[1]))