Django에서 DB 생성 방법
Django 프로젝트 생성 후 DB 생성 방법
- python manage.py runserver
DB 생성(사용자 계정, DB 이름만 만들어진다. 오른쪽 [+] 아이콘에서 DB를 눌러도 내부 아무것도 없다.
- 아래에 나온 것 처럼, 마이그래이트하면 DB에 main 생성된다.
- 새로 DB 생성하기
- (파이참기준) 우측에 데이터베이스 그림 클릭 - [+]아이콘 클릭 – 데이터 소스 – SQLite – 이름 설정
생성 후 , 파이참 콘솔에서(venv) 명령어로 마이그래이트
새로 생성한 DB 기본설정
-
python ./mange.py migrate (DB 생성 적용)

-
python ./manage.py createsuperuser - ryugyoseo / 이메일생략가능 / 1234
-
payhon ./manage.py runserver 후 주소 들어가서 해당 주소 뒤에 /admin 쓰고 로그인 가능
-
이로써 해당 프로젝트에는 새로 생성한 DB가 연결된다. 이후 다른 DB를 사용하려면 위 방법으로는 불가능하다. 해당 연결 설정을 변경해야 하기 때문에 더 어렵다. (추후 추가..)
- 기존 DB 가져오기
-
(파이참기준) 우측에 데이터베이스 그림 클릭 - [+]아이콘 클릭 – 데이터 소스 – SQLite – 이름 설정
우측 데이터 베이스 그림에서 + 클릭 – 데이터소스 – sqlite3 - 파일을 가져온다
-
프로젝트이름(djangoproject2 – urls.py 에 urlpatterns 에 아래 항목 추가)
-
실행시 no module 에러 메시지 나오면 from django.urls import path, include (해도 안나오면 해당 모듈이 없는 것)
-
이게 secure 이라는 파이썬 패키지(폴더 아이콘에 0 있는 아이콘) 이 없어서 그런 것...해당 파있너 패키지에는 프로젝트 있는 파일들이 있다. 마이그래이션, 인이트, 어드민 뷰 등..
Django에서 DB 사용
파이썬 클래스로 DB 사용하기
- (조건) : DB생성 완료(### Django 프로젝트 생성 후 DB 생성 방법)
애플리케이션에서 DB 사용하기 위해 필요한 기초 지식
- 애플리케이션 파이썬 패키지 내 [models.py]파일을 사용한다
- [models.py]파일에서 [import django.db from models]로 models 가져온다.
- models(모델)이란? 데이터에 대한 단 하나의 정보 소스. 모델은 하나의 DB 테이블에 매핑된다
- 모델을 상속하는 클래스 선언 및 호출로 테이블을 제어한다. 즉 (선언된 클래스가 한 테이블이다)
- [Post]이름의 테이블, 필드 생성
- 프로젝트 파이썬 패키지 settings.py – INSTALLE_APPS 에 어플리케이션 Config 파일 지정 필요하다. ('app1.apps.App1Config',)
애플리케이션 파이썬패키지 내부에서 클래스로 DB 테이블 추가
- 애플리케이션 models.py 에 클래스 선언

- 모델이란 부가적인 메타데이터를 가진 데이터베이스의 구조(layout)를 말합니다.
- 순서 : 모델 만들기 -> 모델 활성화 -> API 사용
- models.TextField 와 models.CharField 차이는? models.CharField 는 max_length 설정해야 하고, models.CharField 설정된다. models.TextField 는 제한없음. 따라서 models.CharField sms 길이 제한이 필요한 타입에 지정하고, 그 외에는 models.TextField를 지정하면 되는 것이다.
- 프로젝트 파이썬패키지 파일 settings.py – INSTALLE_APPS에서 애플리케이션 추가한다.

- 마이그래이션 생성(DB에 테이블을 생성했으니, DB수정 적용 목적)
- python ./manage.py makemigrations app1
- 마이그래이션 적용
- python ./manage.py migrate app1
- DB 테이블 추가 확인
- [기존 DB 가져오기] 참고해 가져온 후 (어떤 DB를 가져와야 하나요? 첫 웹프레임 워크로 생서된 db.sqlite3_검색하면 나온다)
- 우측 DB아이콘에서 [+] - 데이터 소스 – SQLite – 일반 – 파일 [열기] - db.sqlite3 가져오기 – 새로고침

애플리케이션에서 추가한 DB 테이블 웹 페이지에서 확인하기
- 참고 [ https://docs.djangoproject.com/ko/4.2/intro/tutorial07/ ]
- (조건) : DB 테이블, DB 사용자 틀 존재(애플리케이션 파이썬패키지 내부에서 클래스로 DB 테이블 추가)
- DB 테이블이 있다는 조건 하에서 설명한다
- 위 조건에서 생성한 테이블은, 내부 테이블로 웹 페이지상에서 보이지 않는다. 내부 테이블을 꺼내서 밖으로 가지고 오기 위해서는 아래 단계를 거치면 된다.
- [애플리케이션 파이썬디렉터리]의 admin.py에 해당 테이블을 site.register 로 가져온다.

- [Blog]라는 테이블을 import로 가져온 후, admin.site.register(Blog)로 사이트에 등록한다.
- 서버 실행 후 URL에 [http://127.0.0.1:8000/admin/app1/] 아래와 같이 해당 테이블이 외부(웹 사이트에서 접근 가능) 바뀐다. 아래 사진처럼 해당 테이블 내부로 들어가 Add, Change 등을 사용 가능(장고 기능)

애플리케이션에서 추가한 DB에 처음으로 사용자 추가하기 (사용자 틀 생성)
- 이는 테이블 추가처럼, [애플리케이션 파이썬디렉터리]의 models.py에 User라는 테이블을 생성 후, admin.py에 해당 유저를 추가시켜주면 된다.
- models.py에 사용자 틀 추가

- 사용자는 name, age를 가진다.
- str 이건 뭘까? 바로 str() 메소드 원본이다. str()함수 오버라이딩(원본함수 가져와서 내 입맛대로 바꾸는 것)으로 해당 객체가 가진 name 이라는 값을 리턴해준다. 해당 클래스의 객체를 사용해 해당 객체를 출력하면 객체가 가진 내용물, 즉 레코드(데이터)를 가져올 수 있다. 세부내용은 (DB 테이블 데이터 조회 참고)
- DB 계정을 사용할 수 있는 계정의 틀을 만든 것이다.
- DB 적용
- 1.에서 DB를 수정했으니, 마이그래이션 생성 및 적용한다.
- 사용자 추가
- 방법 1. DB 프로그램에서 SQL 문으로 사용자 추가
- 방법 2. 파이참 좌측 하단 파이썬 터미널에서 사용자 추가

- 위에서는 blog 라는 애플리케이션 이름을 사용했다.
DB 테이블 데이터 조회 (파이썬 콘솔에서 출력)
방법 1. 데이터(레코드)를 가지는 클래스(테이블)로부터 객체를 가져와 출력한다
- [app1] 애플리케이션으로부터 User 클래스의 객체의 모든 것을 가져와 [show_user_name] 객체에 넣는다. (str 함수 오버라이딩으로 name 사용가능) 그리고 해당 객체를 출력하면 생성한 사용자의 name 이 나온다.

- 클래스로부터 가져온 객체가 반환하는 값이 없다면 오류메시지 출력된다. 이때 fileter 사용하면 오류 메시지가 아닌 비어있다고 나오게 할 수 있다.(방법2)

방법 2. fileter를 사용해 가져오기
- 방법 1처럼 클래스(테이블이름)을 import 로 가져온 후 ,해당 클래스의 객체를 필터링해서 그대로 가져올 수 있다.

- 필터를 사용해 가져오면 QuerySet 으로 리스트 형식으로 가져온다
애플리케이션 파이썬패키지 파이썬 콘솔에서 DB 테이블 레코드(데이터)추가하기
-(조건): 테이블 생성
1. 파이썬 콘솔에서 해당 객체를 불러와 데이터를 넣는다.

- [app1]에서 만든 테이블(클래스명은 Blog)로, 해당 필드(attribute)는 title, content, writer, 등이다.
- blog를 클래스의 객체로 받아 해당 객체에 필드를 추가하고, save 한 후 DB(파이참 우측아이콘) 새로고침 혹은 웹 페이지상에서 확인한다(애플리케이션에서 추가한 DB 테이블 웹 페이지에서 확인하기_참고)
- 추가로, 해당 객체를 일부 수정하고 save 하면 덮여쓰여진다!
- 특이하게 객체를 불러와서 수정하면 DB내용을 수정했음에도 불구하고 마이그레이션 작업이 필요없다