[Django]장고 Shell을 이용한 DB 데이터 정제 및 확인하기(feat.SQLite, cmder)

2020. 12. 16. 22:05python 전문가로/Django

반응형

장고 DB에 데이터가 있는지 확인하는 저의 방법을 적어볼려고 해요.

저는 Cmder라는 Windows 용 console emulator를 사용해서 프로젝트에 접근합니다!

shiningyouandme.tistory.com/16

 

[Django]장고 기본 DB(SQLite)를 활용하여 연동하기

안녕하세요! 웹페이지 프레임워크로 Django를 선택한 당시는 위너! ㅎㅎ 아마 Python 언어때문에 Django 프레임워크를 선택하셨을거에요 맞죠? (아님 말구..) 저는 Python언어를 활용해서 웹페이지까지

shiningyouandme.tistory.com

위와 같이 데이터를 연동했다면,

cmder를 이용해 데이터를 확인해볼까요?

shell을 이용하는 것은 데이터를 이리저리 조작할 수 있는 예행연습을 마련해주는 playground같은 곳이라 생각해요!

먼저, cmder(콘솔)에서 프로젝트 경로로 들어갑니다.

python manage.py shell

위의 명령어를 쓰면 IPython으로 변경되는데요~

여기서,

from board.models import *

그럼 models.py 에 있는 DB layout이 모두 추가됩니다!

그럼 자유롭게 콘솔에서 파이썬(python)을 이용해 데이터를 만지며 예행연습 후 views.py에 코드로 옮기면 시간절약할 수 있는 코딩을 할 수 있습니다~! 

테이블에서 데이터를 가져올 때, 맨처음은 QeurySet으로 가져와야합니다.

class명(models.py).objects.values()

이렇게 명령어를 치면 QuerySet구문으로 값들을 뽑아낼 수 있어요~

쉽게 데이터분석을 하기 위해서 DataFrame으로 변경할 필요가 있겠죠?

import pandas as pd

df = DataFrmae(data)

예를들어서 region==1인 데이터를 뽑는다면,

 

이런식으로 데이터분석을 진행하시면 됩니다.

하지만, 가장 중요한 것!!!!

Django에서 views.py에서 데이터분석을 한 후 html로 데이터를 넘길때는 데이터 형식은 DataFrame로 넘기면 

django template를 쓰기 매우매우매우 어렵습니다ㅜㅜ!!(제가 못하는 걸수도...)

그래서 html로 데이터를 넘길때에는 json이나 list형식으로 넘겨야 되요!

alert_us_json = json.dumps(list(data_region_1), cls=DjangoJSONEncoder)

 

import pandas as pd
import json

def index(request):
    data = Alert_history.objects.values()
    df = pd.DataFrame(data)
    data_region_1 = df[df['region']==1]
    region_json=data_region_1.to_json(orient='records')
    
    
    context = {
        'region_json': region_json,
    }
    
    return render(request, 'board/index.html', context)

 

위와 같이 json또는 list 등으로 데이터타입을 변형후 html로 보내주면 django template으로 값을 웹페이지에 보여질 수 있게 됩니다!