使用python在pandas中通过调取金蝶K3cloud API来进行取数据

为了数据安全与隐私,相关信息数据做了星号处理,请读者自行填充使用
在使用python调取金蝶API的过程中,首先要拿到一组参数

lcId:2052
password
appId
serverUrl
acctId
appSecret
userName

注意:上面这组参数除了lcId和acctId,其他的账号、密码及密钥,要么你是金蝶的系统管理员能够自动生成,要么你就找相关人员要。不然后面没办法调取数据。

提示:密钥需要金蝶k3cloud管理员进入 系统管理->第三方系统认证->新增 生成密钥和填写appid和app名称。

import json, requests
from pandas.core.frame import DataFrame

# 下面两个URL是固定的,写上相应的IP地址,就可以了
login_url = "http://【这里写serverUrl】/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc"
query_url = "http://【这里写serverUrl】/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc"

# 下面登录携带的参数,全部都是我们之前准备好的
login_data = {"acctid": "6*********f", "username": "S*****用", "password": "s*******1", "appId": "22************2qot", "appSecret": "1f*******8d7","lcid": 2052}


# 我们先定义一个登录函数
def login(): 
    login_response = requests.post(url=login_url, data=login_data)
    return login_response.cookies  # 返回登录金蝶的cookies

# 下面按照相应的格式写入我们需要通过API拿取的数据字段,这些字段直接照搬金蝶web API查询时写的字段就行,包括过滤条件啥的。
post_data = {"data": json.dumps({
    "FormId": "BD_STOCK",
    "FieldKeys": "FNumber,FName",    # 我这里就取两个字段 
    "FilterString": "",
    "OrderString": "",
    "StartRow": 0,
    "Limit": 100000,
    "TopRowCount": 100000
})}
# 上面数据如何照搬可以看文末图片

response = requests.post(url=query_url, data=post_data, cookies=login())
data = json.loads(response.text)

# 把提取到的数据,给他命个名称,就可以了
columns = ['FNumber','FName']
df = DataFrame(data=data,columns=columns)

使用python在pandas中通过调取金蝶K3cloud API来进行取数据_第1张图片

你可能感兴趣的:(Python,数据分析,python,pandas,开发语言)