psycopg2 字典转储到 json

psycopg2 dictionary dump to json

抱歉,如果这是一个菜鸟问题,但我正在尝试将 psycopg2 字典直接转储到 json 字符串中。我在浏览器中确实得到了一个 return 值,但它的格式与我看到的大多数其他 json 示例不同。想法是将 select 语句的结果转储到 json 字符串中,并在另一端将其解绑以添加到客户端的数据库中。下面是代码和 return 的示例。 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

sample return

"[{\"alphacoordinate\": \"nmaan-001-01\", \"xcoordinate\": 3072951151886, \"planetarydiameter\": 288499, \"planetarymass\": 2.020936938e+27, \"planetarydescription\": \"PCCGQAAA\", \"planetarydescriptionsecondary\": 0, \"moons\": 1"\"}]"

您可以使用 row_to_json:

直接在 Postgres 中创建 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()