[Django] Pycharm+PostgreSQL+docker+wsl2 setting
1. Docker & PostgreSQL 설정
- docker 설치 및 postgres image 다운로드
- container 만들기
docker run --name postgresql -e POSTGRES_USER=myusername -e POSTGRES_PASSWORD=mypassword -p 5432:5432 -v /data:/var/lib/postgresql/data -d postgres
- database 만들기
⚠️
POSTGRES_USER
와 동일한 이름의 Database가 생성되어 있을텐데, 이를 지우면 해당 user로 로그인할 수 없게 된다. 절대! 지우지 말 것.
# docker container 진입
$ docker exec -it postgresql bash
# postgresql 실행
root@~~:\# psql -h localhost -U myusername
psql (16.1 (Debian 16.1-1.pgdg120+1))
Type "help" for help.
# Database 생성
myusername=\# create database <Database 이름>;
- 가상환경 생성 및 Django 프로젝트 생성
$ python -m venv venv
$ source venv/bin/activate
(venv) $ pip install django djangorestframework
(venv) $ pip install psycopg2-binary # python 환경이므로 psycopg2 말고 psycopg2-binary 설치
(venv) $ django-admin startproject <project 이름>
(venv) $ mv venv <project 이름>/venv
2. Pycharm 설정
- Pycharm 접속 후 project 폴더 열기
- python Interpreter를 venv 환경으로 설정. 새로 생성하는 과정과 동일하게 하되 환경 생성 directory에 이미 존재하는 venv directory를 지정
- Database 연동. pycharm 우측 Database 메뉴에서 + → Data Source → PostgreSQL 클릭 후 username, password, database 설정. (Host, Port는 기본값으로 설정되어 있음)
3. Django Project 설정
- Django project 내
settings.py
에서 Database 관련 설정 작성
# ex)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '<NAME>',
'USER': '<USERNAME>',
'PASSWORD': '<PASSWORD>',
'HOST': 'localhost',
'PORT': 5432,
}
}
- Migrate 진행
- pycharm 내 terminal에서 작업하는 경우 venv activate되어 있는지 확인
**(venv) $ python manage.py migrate**
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
끝~~
Leave a comment