当前位置: 首页 > backend >正文

SQL Server执行安装python环境

安装注意事项

启用python脚本支持

sp_configure 'external scripts enabled', 1;
RECONFIGURE;

安装后接受 Python EULA协议

接受python授权
setup.exe /qs /ACTION=Install /FEATURES=SQL_INST_MR /INSTANCENAME=您的实例名 /IACCEPTROPENLICENSETERMS=1 /IACCEPTPYTHONLICENSETERMS=1

重启SQL服务器

查询python版本 3.7

EXEC sp_execute_external_script
@language = N'Python',
@script = N'
import sys
print(sys.version)
'

不用requests(需要安装,安装失败)调用URL

EXEC sp_execute_external_script
@language = N'Python',
@script = N'
from urllib.request import urlopen, Request
from urllib.parse import urlencode
import pandas as pdurl = "http://localhost/index.html"
params = {"key1": "value1", "key2": "value2"}
full_url = f"{url}?{urlencode(params)}"try:request = Request(full_url)with urlopen(request, timeout=10) as response:status_code = response.getcode()content = response.read().decode("utf-8")[:1000]
except Exception as e:status_code = 0content = str(e)OutputDataSet = pd.DataFrame({"URL": [full_url],"Status": [status_code],"Content": [content]
})
'
WITH RESULT SETS ((URL varchar(1000), Status int, Content varchar(1000)));

结果如下

存储过程:

CREATE PROCEDURE usp_CheckWebsiteStatus@URL varchar(1000)
AS
BEGIN-- 创建临时表存储结果CREATE TABLE #TempResult (URL varchar(1000),Status int,Content varchar(1000));-- 使用INSERT EXEC模式捕获结果INSERT INTO #TempResultEXEC sp_execute_external_script@language = N'Python',@script = N'
from urllib.request import urlopen, Request
from urllib.parse import urlencode
import pandas as pdurl = URL_param
try:request = Request(url)with urlopen(request, timeout=10) as response:status_code = response.getcode()content = response.read().decode("utf-8")[:1000]
except Exception as e:status_code = 0content = str(e)OutputDataSet = pd.DataFrame({"URL": [url],"Status": [status_code],"Content": [content]
})',@params = N'@URL_param varchar(1000)',@URL_param = @URL;-- 返回结果SELECT * FROM #TempResult;-- 根据状态码执行不同业务逻辑DECLARE @Status int;SELECT @Status = Status FROM #TempResult;IF @Status = 200BEGIN-- 确保日志表存在IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'WebsiteStatusLog')BEGINCREATE TABLE WebsiteStatusLog (LogID int IDENTITY(1,1) PRIMARY KEY,CheckTime datetime NOT NULL,URL varchar(1000) NOT NULL,Status int NOT NULL,Content varchar(1000) NULL);END-- 记录错误日志INSERT INTO WebsiteStatusLog(CheckTime, URL, Status, Content)SELECT GETDATE(), URL, Status, Content FROM #TempResult;END-- 清理临时表DROP TABLE #TempResult;
END;
GO-- 使用存储过程
EXEC usp_CheckWebsiteStatus 'http://localhost/index.html';

http://www.xdnf.cn/news/4282.html

相关文章:

  • GIS中常见的影像数据格式和类型
  • 【SpringBoot教程】SpringBoot自定义注解与AOP实现切面日志
  • Spring Boot Starter简介-笔记
  • UE5 C++项目实现单例
  • 基于STM32、HAL库的TTP224C-BSBN 触摸屏控制器驱动程序设计
  • ultralytics框架进行RT-DETR目标检测训练
  • 人工智能 计算智能模糊逻辑讲解
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十一讲)
  • clickhouse - 重新建表覆盖旧表-解决分区时间错误问题-197001
  • GEC6818蜂鸣器驱动开发
  • K8S - Helm 入门与实战 - 应用部署与依赖治理
  • BERT 微调
  • Linux系统之shell脚本基础:条件测试、正整数字符串比较与if、case语句
  • 第四节:进程控制
  • 8086汇编:寄存器
  • 匿名函数对编译错误的影响
  • JVM——垃圾回收
  • 开发规范 - 空指针异常等低级问题注意点
  • 10B扩散文生图模型F-Lite技术报告速读
  • C++ 享元模式与共享工厂模式详解
  • Java学习手册:分库分表策略
  • ESP32- 开发笔记- 软件开发 5 -I2C
  • VMware Fusion安装win11 arm;使用Mac远程连接到Win
  • IBM BAW(原BPM升级版)使用教程:基本概念
  • 设备管理系统的功能架构与核心价值
  • Jesse James Garrett 用户体验方法论
  • 全格式文档转 Markdown 工具,Docker 一键部署,支持 API 调用
  • C# 实现PLC数据自动化定时采集与存储(无需界面,自动化运行)
  • 算法 | 长颖燕麦优化算法AOO,算法原理,公式,深度解析+性能实测(Python代码)
  • linux -c程序开发