Python 在VS2022 调用销售订单WebApi写入本地SqlServer示例原创
金蝶云社区-╄秋メ凋零
╄秋メ凋零
18人赞赏了该文章 610次浏览 未经作者许可,禁止转载编辑于2024年02月22日 16:57:00

使用Python连接SqlServer需要安装pyodbc库

在VS开发项目中展开Python环境,在Python 3.9 右键 管理Python程序包

image.png

管理Python程序包

image.png

安装pyodbc

image.png

-------------------------------------------------------------------------------------------------------------------------

创建数据库

image.png

我的服务器连接实例: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()


-------------------------------------------------------------------------------------------------------------------------

运行项目:

image.png

数据库查询:

image.png

成功写入信息!!!

-------------------------------------------------------------------------------------------------------------------------

定时计划执行可以通过使用Windows计划任务管理定时运行PythonApplication1.py即可!

image.png

image.png

image.png

image.png

回到VS2022

image.png

C:\Users\Admin\Desktop\PythonApplication1\PythonApplication1\PythonApplication1.py

复制py程序文件路径

image.png

image.png

在计划任务属性设置不管用户是否登录都要运行,这样就完成设置了!


如果需要重复执行可以设置重复性执行!

image.png

图标赞 18
18人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!