Ошибка с приведенным ниже скриптом Python, использующим только последнее значение в запросе, которое я использую в качестве входных данных для первого цикла For.Он должен работать для всех возвращенных идентификаторов сотрудников, извлекать фотографию из API и вставлять ее в таблицу.
У меня был запущен этот скрипт, в котором он настроил переменную ввода вручную.Но сейчас я пытаюсь извлечь все идентификаторы сотрудников из запроса и просмотреть их.
import json
import pyodbc
import requests
import sys
InputconnStr = pyodbc.connect(
"DRIVER={SQL Server};"
"SERVER=TestSQL;"
"Database=Intranet;"
"Trusted_Connection=yes;"
)
inputcursor = InputconnStr.cursor()
inputcursor.execute('select EmployeeID from Ciphr_Staging where DATELEFT is null or DATELEFT > getdate()')
for row in inputcursor:
# print(row)
#user = row
url = "https://hrsystem.com/api/PersonPhoto/{}".format(row [0])
headers = {
'Accept': "application/json",
'Authorization': "apikey XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
'Content-Type': "application/json",
'cache-control': "no-cache"
}
response = requests.request("GET", url, headers=headers)
RTP = response.text
RTP = "{\"PersonPhoto\": [" + RTP + "]}"
data = json.loads(RTP)
#data = json.loads(response.text)
ID,Photo,PhotoDate,PhotoType = [],[],[],[]
for device in data['PersonPhoto']:
ID.append(device[u'ID'])
Photo.append(device[u'Photo'])
PhotoDate.append(device[u'PhotoDate'])
PhotoType.append(device[u'PhotoType'])
connStr = pyodbc.connect(
"DRIVER={SQL Server};"
"SERVER=Test2;"
"Database=Intranet;"
"Trusted_Connection=yes;"
)
cursor = connStr.cursor()
sql = "INSERT INTO dbo.Employee_Photo2 ([EmployeeID],[PhotoBinary],[PhotoDate],[FileType]) VALUES (?,?,?,?)"
vals = [(int(device[u'ID']), device[u'Photo'], device[u'PhotoDate'], device[u'PhotoType']) \
for device in data['PersonPhoto']]
cursor.executemany(sql, vals)
connStr.commit()
cursor.close()
connStr.close()