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

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';

相关文章:

  • 用OMS从MySQL迁移到OceanBase,字符集utf8与utf8mb4的差异
  • Python实例题:高德API+Python解决租房问题
  • 室内烟雾明火检测数据集VOC+YOLO格式2469张2类别
  • 驱动开发系列57 - Linux Graphics QXL显卡驱动代码分析(四)显示区域绘制
  • 【专家库】Kuntal Chowdhury
  • 【挖洞利器】GobyAwvs解放双手
  • 基站综合测试仪核心功能详解:从射频参数到5G协议测试实战指南
  • RabbitMQ-api开发
  • 天文探秘学习小结
  • Java 函数式编程
  • 基于GA遗传优化的不同规模城市TSP问题求解算法matlab仿真
  • 删除排序链表中的重复元素:三种解法详解
  • 【Python-Day 10】Python 循环控制流:while 循环详解与 for 循环对比
  • ETL交通行业案例丨某大型铁路运输集团ETL数据集成实践
  • 购物数据分析
  • 双系统电脑中如何把ubuntu装进外接移动固态硬盘
  • 云境天合水陆安全漏电监测仪—迅速确定是否存在漏电现象
  • 算法每日一题 | 入门-顺序结构-三角形面积
  • 第十一届蓝桥杯 2020 C/C++组 蛇形填数
  • 第15章 Python数据类型详解之分解理解:基础数据类型常见易错点和性能优化篇
  • 宁合两大都市圈交汇之城含山:要想身体好,常往含山跑
  • 汪海涛评《线索与痕迹》丨就虚而近实
  • 李云泽:对受关税影响较大、经营暂时困难的市场主体,一企一策提供精准服务
  • 最新研究:基因编辑治疗晚期胃肠道癌显成效
  • 指挥家高健:东方市民音乐会“高贵不贵”,我愿意常来
  • 综合治理食品添加剂滥用问题,国务院食安办等六部门联合出手