python

[python] PostgreSQL→ pandas → json

목적

python 에서 pandas로 PostgreSQL데이터를 읽어와 json 형식으로 사용하기 위함.

db = psycopg2.connect(
~~~~~
)

일단 PostgreSQL 접속부터 진행해서 객체 생성하고

def selectPD():
    sql = "SELECT * FROM WT LIMIT 100"
    result = pd.read_sql(sql,db)
    print(result)

판다스의 read_sql 함수로 sql 쿼리와 db 객체를 같이 넘겨주면 pandas로 데이터 불러오는건 끝.

이제 데이터프레임을 JSON으로 변환해주면 되는데, datetime이나 Timestamp 자료형 데이터가 있는경우 변환시 TypeError: Object of type Timestamp is not JSON serializable 같은 에러가 발생한다.

이를 방지하기 위해 해당 데이터를 문자열로 변환해주는 작업이 필요하다.

def DFtoJSON(df):
    df['timestamp'] = df['timestamp'].astype(str)
    result = df.to_dict(orient='records')
    jresult = json.dumps(result)
    print(jresult)

이렇게 하면 JSON 형식으로 데이터를 받아볼 수 있다.