Преобразование результата SQL в Сериализуемый JSON - PullRequest
0 голосов
/ 26 мая 2019

Я использую Python. Я создаю облачную функцию, которая возвращает результаты поискового запроса, связанного с PostgreSQL. Я клянусь, sql это подключиться. Когда дело доходит до переназначения результата выборки из sql, он говорит, что объект строки не является сериализуемым JSON. Как мне преобразовать результаты этой строки в json?

Вот мой код

def freebie(request):


  engine = create_engine('postgresql://ABC' , echo=True)

  conn = engine.connect()

  x_sql = sa.text('''
            SELECT user_label from "database"."user"
            WHERE "_id" = :userId
        ''')

  record = conn.execute(x_sql, userId = '82f3f82f-5bae-45d3-971f-b4af3a06182f', 
            current_time = datetime.now(), ).fetchall()

  user_labbel = record[0][0]

  campaign_sql = sa.text('''
            SELECT * from "database"."user_fav_books"
            WHERE "user_label" = :campaign_id
        ''')

  result = conn.execute(campaign_sql, campaign_id = user_labbel, 
            current_time = datetime.now(), ).fetchall()

  if len(result) == 0 :
    return "No result"
  else:
    return json.dump(result, indent=4 , check_circular=True)

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

Вы можете преобразовать каждую строку в результате в dict, а затем сериализовать как json. Обратите внимание, что вам не нужно звонить fetchall на результат соединения

result = conn.execute(campaign_sql, campaign_id = user_labbel, 
          current_time = datetime.now(), )
dicts = [dict(row) for row in result]
j = json.dumps(dicts)
0 голосов
/ 26 мая 2019

Попробуйте это,

import json

И вернуть, как показано ниже,

return json.dumps(results, indent=4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...