Python 在VS2022 调用销售订单WebApi写入本地SqlServer示例
使用Python连接SqlServer需要安装pyodbc库
在VS开发项目中展开Python环境,在Python 3.9 右键 管理Python程序包
管理Python程序包
安装pyodbc
-------------------------------------------------------------------------------------------------------------------------
创建数据库
我的服务器连接实例:DESKTOP-9V9UC1F\MSSQLSERVER2022
数据库名为:TestDataBase 表名为:Testlist
-------------------------------------------------------------------------------------------------------------------------
#Python示例代码:
from datetime import date
import requests
import json
import pyodbc
Login ="https://金蝶云服务器地址/K3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc"#登录连接
url = "https://金蝶云服务器地址/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc"#单据查询连接
headers = {'Content-Type': 'application/json'} # 这是常见的设置,表示发送的数据是JSON格式
# 发送POST请求并传递数据
session = requests.Session()
Logindata = {"AcctID":"数据中心ID","UserName":"用户名","Password":"密码","Lcid":"2052"}#登录的JSON请求数据,固定格式,数据中心ID、 用户名、 密码 、自己填写
Josn={"data":{"FormId":"SAL_SaleOrder",
"FieldKeys":"FBillNo,FDocumentStatus,FMaterialId.Fnumber,FQty",
"FilterString":"FCloseStatus='A' and FDocumentStatus in ('C')",
"OrderString":"","TopRowCount":0,"StartRow":0,"Limit":5,"SubSystemId":""}}#查询的JSON请求数据,例如:这里使用的销售订单查询,你也可以是即时库存的请求参数
response = session.post(Login, Logindata)#发送登录
login_data=response.json()#获取登录结果
loginStatus=login_data["LoginResultType"]#获取登录状态
# 创建连接字符串
server = '数据库连接实例名称,如:《DESKTOP-9V9UC1F\MSSQLSERVER2022》' ;
database = '你的数据库名称'
username = 'SQL用户名'
password = 'SQL密码'
driver= '{ODBC Driver 17 for SQL Server}' # 根据你的ODBC驱动版本进行修改
cnxn = pyodbc.connect(f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}')
cursor = cnxn.cursor()
if loginStatus ==1:#成功登录
response = session.post(url, headers=headers,data=json.dumps(Josn))#发送查询
data = response.json()#获取查询结果
count=len(data)#获取查询总行数
print("序号","单据编号","单据状态","物料编码","销售数量")
for i in range(count):#循环打印
print(i,data[i])
# 插入数据的SQL语句
insert_sql = """
INSERT INTO Testlist (FBillNO, FStatus, FNumber,FQty)
VALUES (?,?,?,?)
"""
# 插入数据的值
Insert_data = data[i]
# 执行SQL语句
cursor.execute(insert_sql, Insert_data)
else:
print("没有查询到数据")
# 提交事务
cnxn.commit()
# 关闭连接
cursor.close()
cnxn.close()
-------------------------------------------------------------------------------------------------------------------------
运行项目:
数据库查询:
成功写入信息!!!
-------------------------------------------------------------------------------------------------------------------------
定时计划执行可以通过使用Windows计划任务管理定时运行PythonApplication1.py即可!
回到VS2022
C:\Users\Admin\Desktop\PythonApplication1\PythonApplication1\PythonApplication1.py
复制py程序文件路径
在计划任务属性设置不管用户是否登录都要运行,这样就完成设置了!
如果需要重复执行可以设置重复性执行!
金蝶旗舰版3.0有类似的接口可以使用吗?
非常好,可好直接调用定义好的单据列表 方案来获取数据 并写入到本地mssql?
Python 在VS2022 调用销售订单WebApi写入本地SqlServer示例
本文2024-09-16 18:11:23发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-20513.html