python, 데이터베이스에서 값 가져와서, 사용 할 때 궁금한게 생겼습니다.

조회수 770회

제가 데이터 베이스에 받아온 값을 append로 리스트에 넣고, 각각의 알맹이 값을 쓸 때는 1과 같이 배열에 2번 걸러서 리스트[ ] 제거하고, 튜플( ) 제거한 후에 사용하고 있는데, 다른분들은 어떻게 하시는지 궁금합니다.

그리고 디비에서 records 값 가져와서 2번에서 dict 하면 바로 key,value가 되는데, python.py에서 sqlalchmy.engine.. 값 에서 어떻게 바로 key, value가 되는지도 궁금해요..

python.py

records = db.session.execute(db.session.query(table))
# records = [<sqlalchemy.engine.result.ResultProxy object at 0x7fd035e8d7d0>]


1

season = []
for row in records:
    season.append(row)

# season = [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

for i in range(len(season)):
    result = season[i]
    # season[0] = (1, 'Spring')
    result1 = result[0]
    result2 = result[1]
    print(result1)
    print(result2)

결과:
1
Spring
2
Summer
3
Fall
4
Winter

2

aaa=[dict(record) for record in season]
print(aaa)
결과:
[{1 : 'Spring', 2 : 'Summer', 3 : 'Fall', 4 : 'Winter'}]

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 데이터베이스일때로 국한되는 문제가 아닌 듯 싶네요

    튜플은 unpack 이 가능합니다.

    result1, result2 = result
    

    dict 로 변환은 내부에서 진행되는 겁니다.

    사실 python db 모듈(스펙상)에서는 tuple로만 받게 되어 있습니다.

    그런데 mysql 드라이버에서는 DictCursor 등 추가로 제공되기도 합니다.

    처리가 가능한 이유는 table 의 meta 정보도 받기 때문에 테이블의 컬럼명을 알 수 있습니다. 컬럼명을 알기에 {'컬럼명':값} 와 같은 dict 로 변환할 수 있습니다.

    그리고 질문에서는 tuple -> dict 변환을 물으셨는데 tuple 의 첫요소는 키, 두번째를 value 로 변환해줍니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)