Python에서 oracledb 통해 쿼리 시 응답의 기본적인 형태는 Tuple
(1, 'Setting up a home network', 'Technology')
이런 형태를 편하게 다루기 위해서는 index를 사용해야 하므로 관리가 어렵다.
id = row[0]
title = row[1]
category = row[2]
찾아보니 cursor의 rowFactory라는 메소드를 오버라이딩 하면 리턴받는 데이터의 형태를 바꿀 수 있다.
def make_dic_factory(cursor):
column_names = [d[0] for d in cursor.description]
def create_row(*args):
return dict(zip(column_names, args))
return create_row
def get_articles(table_name):
with connection.cursor() as cursor:
cursor.execute("SELECT * FROM " + table_name)
# 커서의 rowfactory로 지정
cursor.rowfactory = make_dic_factory(cursor)
articles = cursor.fetchall()
return articles
이러면 결과는 아래와 같이 온다.
{'ID': 1, 'TITLE': 'Setting up a home network', 'CATEGORY': 'Technology'}
훨씬 사용하기 편해졌다.
id = article['ID']
title = article['TITLE']
category = article['CATEGORY']
반응형