我正在编写一个简单的 Python 脚本,利用 SQL Server 中的 Python 机器学习服务功能。目标是我的 SQL 服务器可以使用 python 脚本 ping 外部 API 并将结果读入变量。
我已经成功构建了 GET 请求,我只是在努力将 API 的输出反馈到数据库中
到目前为止我所拥有的:
EXECUTE sp_execute_external_script @language = N'Python',
@script = N'
import requests
import pandas as pd
URL = "https://api.website.io/verify?email=dave@davidson.com&apikey=test_44fbcce85ba0f270273f4452bea2311de50f9c"
r = requests.get(url = URL)
data = r.text
print(data)
'
, @input_data_1 = N''
WITH RESULT SETS(([Col1] varchar(MAX) NOT NULL));
所以 print(data) 在 SSMS 中给了我以下输出:
{"success":false,"message":"Invalid API key"}
但我不想打印它,我想将它读入 SQL。我真的不在乎它是怎么出来的,所以现在我只指定了一个名为“Col1”的列来保存输出,但我最终需要将“False”和“Invalid API key”加载到两个变量中我的 SQL Server 存储过程,以便我可以在下一步中使用这些值。如果我必须手动从 JSON 中解析出来,那我很好,但理想情况下,它们会在 SQL 输出中作为单独的列出现。
我尝试在各种排列中使用 r.json() 但我得到了很多不同的错误:
对于 SQL Server 机器学习,我知道我需要创建一个名为“OutputDataSet”的变量,并且需要属于“pandas 数据框”类型,因此我需要将“r”中保存的 JSON 数据转换为 pandas 数据框。然而,我在这方面尝试的一切都给了我神秘的错误代码
例如:
OutputDataSet = pd.DataFrame.from_dict(r.json(), orient="index")
给出:“执行错误。”
或者
OutputDataSet = pd.DataFrame.from_dict(r.text, orient="index")
给出“AttributeError:‘str’对象没有属性‘values’”
将 JSON 转换为我没有得到的 DataFrame 的语法是什么?或者是否需要额外的步骤或库来将 Requests 库的输出转换为 Pandas 库可以接受的东西?