postgresql 테이블을 csv로 저장하기 (with pandas)
postgresql 테이블을 csv로 저장하기 (with pandas)
flask에서 postgreSQL 테이블 내용을 csv로 저장하는 함수 작성을 하고 기록해둔다.
처음에는 psycopg2에서 제공하는 함수를 사용해볼까 했는데
함수 자체의 설명도 부족하고 어차피 기계 실험해야 하면 pandas 사용해야 해서
pandas 의 read_sql, to_csv의 함수를 사용했는데 간편하고 좋은 것 같다.
import psycopg2 as pc
import pandas as pd
dataReceive = request.get_json()
df = get_data(dataReceive)
def get_data(req_data):
try:
conn = pc.connect("dbname=디비이름 user=계정 password=암호")
curs = conn.cursor()
sql = "Select {0}, date, region_cd, {1} From 테이블이름 where {2} > 0 order by date".format(req_data['name'], fieldstr, req_data['name'])
df = pd.read_sql(sql, conn)
df.to_csv("/experiment/result.csv", encoding='utf-8', header = True, doublequote = True, sep=',', index=False)
print("CSV File has been created")
conn.close()
except Exception as error:
logger.warn("ERROR in get_data function")
logger.warn(error)
return df
참조: https://www.mydatahack.com/how-to-bulk-load-data-into-postgresql-with-python/