дамп словаря psycopg2 в json - PullRequest
0 голосов
/ 18 июня 2020

Извините, если это вопрос новичков, но я пытаюсь сбросить словарь psycopg2 прямо в строку json. Я получаю возвращаемое значение в браузере, но оно не отформатировано, как большинство других json примеров, которые я вижу. Идея состоит в том, чтобы выгрузить результат оператора select в строку json и разделить ее на другом конце, чтобы добавить в базу данных на стороне клиента. Код ниже и образец возврата. Есть ли лучший способ выполнить эту операцию с помощью json и psycopg2?

    # initializing variables
    location_connection = location_cursor = 0
    sql_string = coordinate_return = data = ""

    # opening connection and setting cursor
    location_connection = psycopg2.connect("dbname='' user='' password=''")
    location_cursor = location_connection.cursor(cursor_factory=psycopg2.extras.RealDictCursor)

    # setting sql string and executing query
    sql_string = "select * from " + tablename + " where left(alphacoordinate," + str(len(coordinate)) + ") = '" + coordinate + "' order by alphacoordinate;"
    location_cursor.execute(sql_string)
    data = json.dumps(location_cursor.fetchall())

    # closing database connection
    location_connection.close()

    # returning coordinate string
    return data

выборка

"[{\" alphacoordinate \ ": \" nmaan-001 -01 \ ", \" xcoordinate \ ": 3072951151886, \" планетарный диаметр \ ": 288499, \" planetarymass \ ": 2.020936938e + 27, \" planetarydescription \ ": \" PCCGQAAA \ ", \" planetarydescriptionsecondary \ ": 0, \ "луны \": 1 "\"}] "

1 Ответ

1 голос
/ 18 июня 2020

Вы можете создать строку JSON непосредственно в Postgres, используя row_to_json:

# setting sql string and executing query
sql_string = "select row_to_json(" + tablename + ") from " + tablename + " where left(alphacoordinate," + str(len(coordinate)) + ") = '" + coordinate + "' order by alphacoordinate;"
location_cursor.execute(sql_string)
data = location_cursor.fetchall()
...