<postgresql 설치>
- 이 블로그를 참고하면 된다
- 여기서 3번 이후로는 할 필요없다 vscode에서 할거니까
- 설치완료까지 하면 vscode로 이동!
<vscode에 연동>
- 확장프로그램 설치
- extentions(ctrl+shift+x) 눌러서 postgresql 검색 후 설치
- 설치하면 왼쪽에 데이터베이스 탭이 생기는데 클릭하고 데이터베이스를 연결한다
- 데이터베이스명 바꿔서 적어도 되는지는 모르겠다
- 그냥 Create Connection 누를 때부터 이미 postgres로 써있어서 처음에 그렇게 연결했다가 연결 끊고 다시 연결할 때 데이터베이스명 이름 바꾸니까 에러 떴다
- 아마도 postgres가 기본 데이터베이스명인 것 같다
- sql shell 등으로 데이터베이스를 추가 생성하고 연결 끊었다가 다시 연결할 때는 새로 생성한 데이터베이스명을 입력해도 되지 않을까 싶다
- 근데 어차피 연결하고 나서 vscode에서도 데이터베이스 생성할 수 있고 원하는 데이터베이스만 보이게도 설정할 수 있다
- vscode에서 데이터베이스 생성
- 데이터베이스명 postgres 싫어서 다른 데이터베이스명을 가지고 싶은 사람만 보면 됨
- 이제 여기서 newdatabase 만 보이게 하고 싶다면 맨 위 postgres 15.3 에 마우스를 올리면 깔때기 버튼이 있는데 그걸 선택하면 된다
- 그럼 데이터베이스 선택하는 창이 뜨고 원하는 데이터베이스 체크한 후 ok 누르면 된다
<DB연결>
- psycopg2 설치
pip install psycopg2
- .env
DB_ENGINE="django.db.backends.postgresql"
DB_NAME="데이터베이스 이름"
DB_USER="유저 이름"
DB_PASSWORD="비밀번호"
DB_HOST="호스트 주소 또는 localhost"
DB_PORT=포트번호
- 포트번호는 정수형으로 입력한다
- 비밀번호만 노출되면 안 되니까 비밀번호만 넣어도 되는데 통일성을 위해 다 넣었다
- settings.py
DATABASES = {
"default": {
"ENGINE": os.environ.get("DB_ENGINE"),
"NAME": os.environ.get("DB_NAME"),
"USER": os.environ.get("DB_USER"),
"PASSWORD": os.environ.get("DB_PASSWORD"),
"HOST": os.environ.get("DB_HOST"),
"PORT": os.environ.get("DB_PORT"),
}
}
- .env 파일에서 다 불러온다
- migrate
python manage.py makemigrations
python manage.py migrate
- 관리자 계정 생성
- 전시회 데이터는 관리자만 작성 가능하므로 관리자 계정을 먼저 생성해준다
python manage.py createsuperuser
- 필드 최대 길이 조정하기
- 모델에 최대 길이 설정되어 있는 거랑 상관없이 postgresql의 칼럼에는 최대 길이가 정해져 있다
- 우리가 가져온 데이터의 경우 content 필드의 최대 길이가 2만9천자인가.. 되는 게 있다
- 그래서 칼럼 최대 길이를 30000으로 늘려주고
- url도 지금 기본으로 최대 길이가 100으로 돼있어서 늘려줘야 한다
- 2번이 open query다
- 클릭해주면 저 창이 뜨고 아래 쿼리문을 복사해준다
ALTER TABLE exhibitions_exhibition ALTER COLUMN content TYPE VARCHAR (30000);
ALTER TABLE exhibitions_exhibition ALTER COLUMN image TYPE VARCHAR (200);
ALTER TABLE exhibitions_exhibition ALTER COLUMN direct_url TYPE VARCHAR (200);
- 그 다음 차례차례 Execute 버튼을 눌러주면 된다
- 쿼리문 작성 순서나 실행 순서는 마음대로 해도 된다
- 데이터 DB에 저장하기
- 팀원분이 데이터를 가져와서 가공한 파일 속 데이터들을 데이터베이스에 넣어준다
python manage.py loaddata exhibitions/utils_data.json
<결과물>
- 추가로 런서버 잘 되는지도 확인해 준다
python manage.py runserver