【发布时间】:2018-12-21 22:19:08
【问题描述】:
我一直在研究我在 Python 中调用 RestAPI、返回/解析 json 并存储结果的技能。最终,我的最终目标是构建程序以将我们的数据引入我们的数据仓库。
我已经能够调用 API 并将数据存储到 CSV,我可以打开数据库连接并运行 SQL 语句并打印结果,但这是我的权宜之计。
既然 SQL Server 2017 能够在 SSMS 中运行 python 脚本并创建存储过程,我希望我可以弥合 SQL 中的差距并使用 Python 调用 API,返回数据,然后使用 SQL 来验证和追加数据到正确的表。
我见过的 SQL Server 中 Python 的唯一脚本示例是用于分析 SQL Server 中已有的数据,而不是用于在 SQL 中存储数据。
这是我目前所拥有的。
我需要哪些 Python 包,如何将 SQL 语句/SQL 变量插入 Python 脚本以供使用?
--Python Version
execute sp_execute_external_script
@language = N'Python',
@script = N'
import sys
import codecs
import requests
import json
locations = select top(10) locationId from TestDb.locationstable
for j in range(locations):
url = "http://example.com/api/location/" + locations[j]+ "/users"
querystring = {"pretty":"1"}
headers = {"Api-Key": ""}
r = requests.request("GET", url, headers=headers, params=querystring)
d = r.json()
status = d["status"]
responseData = d["data"]["Users"]
print(status)
print(responseData)
当我取出 for 循环并将一个位置硬编码到脚本中时,python 部分在 SQL Server 中工作,但不确定如何让位置变量引用 select 语句中的数据列表以在 Python 中工作脚本。
然后,如果返回的响应数据是这样返回的,我将如何处理它:
STDOUT message(s) from external script:
status: 200
STDOUT message(s) from external script:
[{'id': '123', 'name': 'Sally'}, {'id': '124', 'name': 'Joe'}]
【问题讨论】:
标签: python sql json sql-server sql-server-2017