[TIL] # 24 Django mysql

데이터 추가, 삭제

Django shell과 mysql을 이용해서 추가, 삭제, 변경들 여러가지 해보고 복습도 할겸 써볼게요

일단은 미리 연습해볼겸 넣어놨던 데이터들이 있는데

mysql, orm 을 이용한 추가, 삭제

메뉴추가

가장 상위 카테고리인 메뉴 추가 한번 보겠습니다

delete from drinks_menu where id=1;

명령어를 이용해서 삭제한 후에 다시 생성 해볼건데,

Django shell

Menu.objects.create(name = "음료")

입력후 모습을 보게 되면 1이 아닌 3으로 다시 추가가 된걸 확인 할 수 있습니다

만약 초기화를 하고싶다 하시면

TRUNCATE table_name

입력해서 삭제후에 다시 만들어주면 됩니다

같은 방식으로 총 4개의 메뉴를 추가 해줬습니다


카테고리 추가

메뉴와 ForeignKey로 연결이 되어 있는 category의 경우는
추가 할때 생각해야 할게 한가지 있습니다

메뉴와 연결이 되어있기 때문에 ( menu_id를 이용해 여러가지 카테고리 생성 )
우리가 생성하는 카테고리가 어느 메뉴에 속해 있는지 확인해야 합니다

메뉴가 음료콜드브루 를 만들 것이기 때문에
우선 메뉴명을 가지고 오고 그 후에 메뉴가 어떤건지 정해 주면 됩니다

mysql 확인

category 테이블에 menu_id는 3이고, 이름이 콜드브루인 컬럼이 추가됬습니다

같은 방식으로 다 만들어 볼게요

각각 어디 메뉴에 포함을 시킬지 id를 통해 메뉴탭을 가지고 오고,
그 이후에 어떤 카테고리를 만들지 생각하면 됩니다


음료

카테고리를 만드는 방법과 같습니다

다른점은 음료의 경우는 category_id를 가지고 와서 만들어 주기 때문에
만들려는 음료의 카테고리 id를 알아야합니다

bulk_create

혹은 이렇게 bulk_create를 이용해서 한번에 만들어 줄수도 있습니다

Drink.objects.bulk_create([Drink(korean_name = "바닐라 크림 콜드브루", category = get_coldbrew), Drink(korean_name = "망고 패션 후르츠 블렌디드", category = get_blended), Drink(korean_name = "딸기 요거트 블렌디드", category = get_blended)]) 

명령어를 입력해서 만들어주게 되면

요런식으로 blank를 무시하고 값을 생성해 줍니다

나머지도 다 만들어 주겠습니다

각각의 카테고리당 2개씩의 음료와 빵을 넣어 주었고,

다음은 이제 manytomany관계인 알러지로 가보겠습니다

알러지

다대다 관계의 경우는 조금 다릅니다

중간테이블이 중요하기 때문에 알러지의 이름을 추가해 준뒤
알러지 이름에 맞는 커피를 추가 해주면 됩니다


# 대두 알러지를 가지고 옴
bean = Allergy.objects.get(id = 1)

# 콩 알러지에 Drink id가 1인 음료를 추가 
bean.drink.add(Drink.objects.get(id = 1)

알러지와 드링크의 아이디를 가지고온 테이블이 만들어 집니다

쭉 만들어 보겠습니다

이렇게 모두 만들어 줬는데,,, allergy_id 를 기준으로 정렬이 되있네요

ORDER BY 정렬할 컬럼 

명령어를 이용해서 정렬한 테이블 확인하고 넘어 갈게요

image

이미지는 일대다 했던 방식이랑 같습니다

save() 메서드 사용해서 만들기

장고매니저를 이용해 create() 메서드를 사용해도 되지만
클래스 자제적으로 save 메서드가 존재합니다

models.Model 의 definition 에 들어가게되면

혹은 장고 공식문서에서

https://docs.djangoproject.com/en/3.1/ref/models/instances/

확인 가능합니다

보통 save 메서드를 가지고와서 오버라이딩해서 사용을 많이 하는걸로 알고있습니다

save 메서드를 이용하여 만드는 법입니다

이렇게 만든 결과물을 확인해보면

mysql에서 확인해보면 추가된걸 확인 할 수 있습니다


장고의 모델 생성 방법, 삭제하는 방법을 알아봤습니다

감사합니다 😁

좋은 웹페이지 즐겨찾기