Передача нескольких или нулевых значений в полезной нагрузке для вызова REST API с использованием Python - PullRequest
0 голосов
/ 20 июня 2020

Как я могу вызвать API сообщений с python, используя более одного или ни одного значения, поступающего из БД, вместо жесткого кодирования значений в моей полезной нагрузке? Это означает, что всякий раз, когда я вызываю post API, значение полезной нагрузки [id] может изменяться в соответствии с идентификатором или идентификаторами, сгенерированными из запроса SQL. Когда я жестко кодирую его и передаю одно значение в свою полезную нагрузку, он работает:

dictionary={"profile_fields": {"name":["email", "address"]},"filters": {"id": "AB1"}}

Но когда я не хочу жестко кодировать его и вместо этого использовать имя переменной, используемое для запроса моей БД, Я не получаю результатов и не вижу ошибок.

dictionary={"profile_fields": {"name": ["email","address"]},"filters": {"id": 
               df}}

Спасибо за вашу помощь.

Sql пример вывода:

col1:
AB1
AB2

Пример кода Python 3:

 c = con.cursor()

# sql query from sqlite, the output can be 1 vaue or two or even empty
c.execute('select col1 from t1 where col1 = col2')

df=c.fetchall()

print('checking the output of sql',df)

 #print output:
  # [('AB1',), ('AB2',)]

# data payload
dictionary={"profile_fields": {"name": ["email", "address"]},"filters": {"id": df}}

# url
url='https://...'
#post api call
response= response.post(url,json=dictionary,...)

 
if (responce.status_code == 200):
   #response back in JSON format
   df = response.json()
   print('Success!')
else:
  print('error.. ')

1 Ответ

0 голосов
/ 21 июня 2020

Я не получил ни результата, ни ошибки

Это странно, потому что результат pd.read_sql_query - это фрейм данных, а fetchall - метод из cursor. Я почти уверен, что его там не должно быть, и его вызов вызовет исключение.

Следующее, df - это фрейм данных, и, вероятно, он двумерный, потому что вы не указали столбец в read_sql_query. Таким образом, вы отправляете массив массивов id s. Попробуйте распечатать полезные данные, чтобы увидеть, что отправляется:

print(json.dumps(dictionary))

Преобразовать df в коллекцию id s:

ids = tuple(df[0])

Теперь ids может быть пустым , это может быть одно или несколько значений. Как вы справляетесь с этим, не входит в объем этого вопроса, но пока вы можете просто id = ids[0] и поместить его в dictionary (вместо df).

...