Python(3) - PostgreSQL 연결
Python 관련 포스팅
- Python(1) - Django 설치
- Python(2) - MySQL 연결
- Python(3) - PostgreSQL 연결
- Python(4) - Query 만들기
- Python(5) - Django 가상 환경과 settings.py
1. 선행 작업
- django 설치
$ python -m pip install Django
- 현재 directory에 project 만들기
$ django-admin startproject [project 이름]
- project파일 위치로 이동해 app 만들기
$ cd [project 이름]
$ django-admin startapp [app 이름]
- server 실행
$ python manage.py runserver
- pgAdmin 4 다운로드
https://www.pgadmin.org/download/
2. pgAdmin 4 실행
Servers
-PostgreSQL
-Databases
우클릭 -Create
-Database...
선택- Database 이름 기입 후,
Save
3. Database 설정
[app]/settings.py
수정DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'testdb', # db 이름 설정 'USER': 'postgres', 'PASSWORD': '1234', # 비밀번호 설정 'HOST': 'localhost', # 127.0.0.1 도 가능 'PORT': '5432', } }
ENGINE
: 자신이 사용할 db 엔진NAME
: db 이름HOST
: db hostPORT
: db 실행할 포트(기본값 5432)
INSTALLED_APPS = [ 'myapp', # app 등록 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
- 만든 app을 INSTALLED_APPS에 추가
4. Table 만들기
[app]/model.py
from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
- table 이름을 class 이름으로, column 이름은 변수 이름으로 설정
- field type은 아래 문서 참고 https://docs.djangoproject.com/en/4.0/ref/models/fields/#model-field-types
5. DB연결 및 table 생성
- psycopg2 설치: Django와 PostgreSQL을 연결
$ pip install psycopg2
- migrations 폴더 생성: model이 신규로 생성 또는 변경될 시 실행
$ python manage.py makemigrations
- model class로부터 table 생성 및 수정 실행, 실제 migration을 DB에 적용
$ python manage.py migrate