Цикл Python For работает только для последнего значения входного SQL-запроса - PullRequest
0 голосов
/ 10 июня 2019

Ошибка с приведенным ниже скриптом 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()
...