2017-12-25 11 views
-1

私はだから私は基本的にDBの操作をフェッチんPythonは:

 Column  |   Type   | Modifiers 
----------------------+------------------------+----------- 
task_info   | character varying(100) | 
timestamp   | date     | 
task_count   | integer    | 

「info_tbl SELECT * FROM」と使用してJSON形式でデータ出力を得るPostgreSQLでテーブルinfo_tblを持つカスタム形式で出力をjson.dumps json.dumps。これらの出力は、単に理解のために、したがってのみ最初に提示している

[ 
    { 
    "task_info": "ABC", 
    "data_to_plot": [["2017-04-30", "993"],["2017-05-28", "624"],["2017-06-21", "811"]] 
    }, 
    { 
    "task_info": "PQR", 
    "data_to_plot": [["2017-05-31","413"],["2017-06-16", "773"],["2017-07-21", "941"],["2017-08-30", "493"]] 
    } 
] 

[ 
    { 
    "task_info": "ABC", 
    "timestamp": "2017-04-30", 
    "task_count": 993 
    }, 
    { 
    "task_info": "PQR", 
    "timestamp": "2017-05-31", 
    "task_count": 413 
    } 
] 

私が実際に達成するために望むものながら、このようなものです。しかし、うちは私がこのような何かであるGET、PUT実際の表には1000を超えるレコードがありますが、2つのレコードです。 私はこれをプロットチャートに使用します。

+0

あなたはフォーマットの結果に独自の方法を行う必要があります - 'json.dumps'を使用せず - 特にあなたは違った編成されたデータを必要としています。あるいは、最初に異なる方法でデータを整理しています。いくつかの理由で – furas

+0

、私は他の依存関係も持っているので、私はデータフォーマット(テーブル構造)を変更することはできません。私は希望の出力と一致するようにjson.dumpsデータ出力を再フォーマットする方法があるかどうかを知りたがっています。 –

+0

あなたはあまりにも異なる結果を期待しています - あなたはあまりにも多くのダンプを再フォーマットすることはできません。データを表示するには、データを再編成する必要があります。いくつかの要素をリストにまとめる必要があります。おそらく 'pandas'は' groupby() 'を使ってデータをグループ化する方が簡単でしょう。 – furas

答えて

0

@furasは実際にダンプを再フォーマットするのは実際的ではないと判明しました。したがって、再フォーマットを行うためにパンダを使用しました。私はそれがHighChartsの入力としてデータを準備しようとしている他の人にも役立つだろうと思っていたので、今後、パンダを使って回避策を投稿しています。

import psycopg2 
from psycopg2.extras import RealDictCursor 

con = psycopg2.connect("dbname='yourDBname' user='yourUserName' host='yourAddressOrLocalhost' password='yourPassword'") 
cur = con.cursor(cursor_factory=RealDictCursor) 

query = "select * from info_tbl" 
cur.execute(query) 

df = pd.DataFrame(cur.fetchall(),index=None) 
df['data_to_plot'] = df.apply(lambda row: [str(row['timestamp']) , row['task_count']], axis = 1) 

result = df.groupby('task_info')['data_to_plot'].apply(list).reset_index().to_json(orient='records') 
#result 
print(json.dumps(json.loads(result),indent=2)) 

出力:

''' 
    [ 
     { 
     "task_info": "ABC", 
     "data_to_plot": [["2017-04-30", "993"],["2017-05-28", "624"],["2017-06-21", "811"]] 
     }, 
     { 
     "task_info": "PQR", 
     "data_to_plot": [["2017-05-31","413"],["2017-06-16", "773"],["2017-07-21", "941"],["2017-08-30", "493"]] 
     } 
    ] 
'''