주니어 데이터 엔지니어 우솨's 개발일지

데이터 엔지니어링 11일차 TIL 본문

데브코스

데이터 엔지니어링 11일차 TIL

우솨 2024. 4. 8. 17:37

학습내용

cmd에서 실행
pyhon 가상 환경 생성
py -m venv project-name

가성환경 활성화
django-project\Scripts\activate.bat

Django 프로젝트 생성
django-admin startproject mysite

생성한 프로젝트를 서버에서 실행
python manage.py runserver

프로젝트란?
하나의 웹사이트라고 생각하면 된다.
하나의 프로젝트는 여러개의 앱으로 구성된다.

app생성
python manage.py startapp polls

관계형 데이터베이스(RDB)
데이터를 행과 열로 이루어진 테이블의 형태로 구성하고, 테이블 간의 관계를 정의하는 데이터베이스이다.
테이블(Table)
데이터베이스에서 행과 열로 구성되어 있는 데이터의 집합을 의미한다.

model.py
모델을 테이블 별로 읽어서 테이블에 저장되어 있는 값을 코드에서 읽을 수 있도록 도와준다. (ORM)
1. 모델생성
2. 모델을 테이블에 써주기 위한 마이그레이션을 만든다.
3. 모델에 맞는 테이블을 만든다.

 

migration 파일 생성하기

python manage.py makemigratios polls

 

migration으로 실행될 SQL 문장 살펴보기

python manage.py sqlmigrate polls 0001

 

migration 실행하기

python manage.py migrate

 

Django에서 sqlite3로 데이터베이스 열기

sqlite3 db.sqlite3

 

migration 롤백

python manage.py migrate polls 0001

 

Django Admin계정 생성

python manage.py createsuperuser

 

admin.py에서 모델 등록

admin.site.register(Question) #models 안의 Question 클래스

admin.site.register(Choice) #models 안의 Choice 클래스

 

장고 쉘 실행

python manage.py shell

 

모든오브젝트 가져오기

Question.objects.all()

 

현재 날짜와 시간 구하기

from datetime import datetime

datetime.now()

 

from django.utils import timezone

timezone.now()

 

쉘 레코드 생성

q.choice_set.create(choice_text='b')

저장

q.save()

 

쉘 레코드 내용 추가하기

q.question_text = q.question_text + '???'

 

해당 오브젝트 삭제

choice.delete()

 

필터링

Question.objects.get(id=1)  #하나가 넘으면 에러 발생

Question.objects.filter(pub_date_year=2023) #여러개 가능

반대 = filter대신 exclude

startswith='a' a로 시작

contains = 'a' a포함

 

 

gt = greater than 이상 gt=0 # 0이상

lt = less than 이하

 

쿼리 가져오기

print(Question.objects.filter(pub_date_year=2023).query)

 

정규표현식

Question.objects.filter(question_text__regex=r'^휴가.*어디')

-휴가로 시작 어디 포함

 

timedelta 날짜 계산

timedate.now() + timedelta(days=1, hours=1, minutes=30)

-1일 1시간 30분후의 날짜와 시간 계산

 

느낀 점

장고의 사용은 처음이라 쉽지 않았는데 첫날부터 내용도 많았지만 환경설정에서 여러 에러가 자주 일어나서 구글링을 하느라 엄청난 시간을 잡아 먹었다.

실습을 따라해보면서 감을 익히고 있지만 쉽지 않을거란 생각이 든다.

sql을 조금이나마 공부해둬서 쉘의 사용과 쿼리구조에 대해 대충 이해할 수 있었다.

sql에 대한 더 많은 공부가 필요하다고 느꼈다. 복잡하지만 재미있었다.