ORM으로 Table 조작

MIN·2023년 9월 26일
post-thumbnail
이 글은 아이티뱅크 강의를 듣고 공부한 내용을 토대로 작성한 글입니다.
혹시 잘못된 내용이 있을 시 댓글로 알려주시면 감사하겠습니다 ^U^

지난번 게시글에서 나는 Board 테이블을 만들어서 관리자 페이지에 연결하였다. 서버를 실행해 실제 GUI 환경에서 admin사이트를 들어가면 Board 테이블을 확인할 수 있다.

이 게시판에 글을 작성해보자
title은 "디저트1" content는 "케이크 먹고싶다" 로 작성해보았다.

정말로 케이크가 먹고싶어졌다....

🥨 외부 Application 연결

  • Django Shell을 이용하여 작업도 가능하지만, 별도의 스크립트 파일을 Djagno와 연동하여 작업하는 것이 편리하다.
  • 일반 Python 스크립트 파일은 Django에 등록되어있지 않은 Application이므로 Django 내부 데이터에 접근이 불가능하다.
  • 반드시 실행하고자 하는 Application을 프로젝트에 등록 후 데이터를 주고받을 인터페이스에(WSGI)를 지정해야 한다.
  • 추후 템플릿 코드등을 작성하는데 여기서 사용되는 문법이 쓰이므로 반드시 숙지해야 한다.

🥨 Table 조작

프로젝트 폴더 바로 아래에 models_test.py 와 같이 새로운 파일을 생성해서 조작한다.

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

위 코드는 프로젝트에 models_test 등록 및 WSGI 인터페이스를 호출하는 코드다.

🥨 테이블 데이터 조회

경로 : myhome\models_test.py
( 여기서 myhome은 프로젝트 상위폴더이다. )

from MyWeb.models import Board

def data_select():
    print(Board.objects.all())        # 모든 데이터 조회
    print(Board.objects.count())      # 데이터 개수 조회
    print(Board.objects.get(id=1))    # id가 1인 데이터 조회 (filter도 가능)

data_select()

위 코드는 다음과 같이 출력된다.

<QuerySet [<Board: 디저트1>]>
1
디저트1

모든 데이터는 <Board: 디저트1>밖에 없으므로가 이것만 출력되었고
따라서 데이터 개수도 1로 출력되었다.

처음으로 작성한 데이터기 때문에 id가 1이고 아까 APP의 models.py에서 반환값을 title로 설정하여 디저트가 나오게 되었다.


🥨 테이블 데이터 생성

from MyWeb.models import Board

def data_create():
    Board_data = Board(title="디저트2", content="마카롱")
    Board_data.save()
    print(Board.objects.all())

data_create()

위 코드를 실행하면 title이 "디저트2"인 데이터가 생성된다.
데이터가 잘 생성되었는지를 보기위해 생성 코드를 주석처리하고
위의 조회 코드를 실행해본다.

<QuerySet [<Board: 디저트1>, <Board: 디저트2>]>
2
디저트1

디저트2라는 데이터가 잘 추가되어서 위와 같이 잘 나온 것을 볼 수 있다.
이 때 id가 1인 데이터의 title은 여전히 디저트1이므로 디저트1로 출력된다.


🥨 테이블 데이터 삭제

from MyWeb.models import Board

def data_delete():
    Board_data = Board.objects.get(title="디저트2")
    Board_data.delete()
    print(Board.objects.all())

data_delete()

위와 같이 작성하면 데이터를 삭제할 수 있다.
위의 코드는 title을 적어서 그 title의 데이터를 삭제하도록 하였다.
이때 title이 아닌 다른 id 같은것으로 데이터를 구분하여 삭제할수도 있다.


🥨 테이블 데이터 수정

from MyWeb.models import Board

def data_modify():
    Board_data = Board.objects.get(title="디저트1")
    Board_data.title = "디저트3"
    Board_data.content = "티라미수"
    Board_data.save()
    print(Board.objects.all())

data_modify()

위의 코드는 데이터를 수정하는 코드이다.
디저트1의 데이터를 title은 디저트3, content는 티라미수로 바꾸었다.

<QuerySet [<Board: 디저트3>]>
1
디저트3

데이터 조회 코드를 이용하여 다시 출력을 하면 잘 수정되었음을 확인할 수 있다^^

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글