2017-04-06 40 views

回答

0

如果你喜歡使用SQL這一點,有json_build_object function

SELECT 
    json_build_object(
    'id', id, 
    'client', json_build_object(
     'id', client_id, 
     'name', client_name)) 
FROM 
    tickets; 

例:

#!/usr/bin/env python 

import psycopg2 
import json 

conn = psycopg2.connect('') 
cur = conn.cursor() 
cur.execute(""" 
    with tickets(id, client_id, client_name) as (values(1,2,'x'),(3,4,'y')) 
    SELECT 
     json_build_object(
     'id', id, 
     'client', json_build_object(
      'id', client_id, 
      'name', client_name)) 
    FROM 
     tickets; 
    """) 

for row in cur.fetchall(): 
    print row, json.dumps(row[0]) 

輸出:

 
({u'client': {u'id': 2, u'name': u'x'}, u'id': 1},) {"client": {"id": 2, "name": "x"}, "id": 1} 
({u'client': {u'id': 4, u'name': u'y'}, u'id': 3},) {"client": {"id": 4, "name": "y"}, "id": 3} 
+0

它的工作原理,但每次結果 「json_build_object」。看起來像: '{ 「json_build_object」:{id:...} },{ 「json_build_object」:{id:...} }'。我可以提高數據水平嗎? –

+0

沒有''json_build_object「''鍵 –

+0

@IldarAkhmetzyanov可能我們在代碼上有一些區別。新增示例。 – Abelisto