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

제가 데이터 베이스에 받아온 값을 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답변

  • 좋아요

    2

    싫어요
    채택취소하기

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

    튜플은 unpack 이 가능합니다.

    result1, result2 = result
    

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

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

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

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

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

    • 답변 감사합니다. 이해가 쏙쏙 되네요. jaeuk412 2018.12.5 18:46

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.