EMDI는 지금도 개발중

Python with Django : 장고 웹 프로그래밍 & PostgreSQL 사용해서 만들기(1) 본문

언어/Python

Python with Django : 장고 웹 프로그래밍 & PostgreSQL 사용해서 만들기(1)

EMDI 2020. 6. 11. 11:09

저번 글들은 "파이썬 웹 프로그래밍, 실전편"이라는 책을 참고하여 연습해본 글들입니다. 이번 글부터는 제가 실제 만들고 싶은 웹사이트를 만들어보도록 해보겠습니다. 만약 파이썬 설치 및 PostgreSQL 설치 등 진행이 안되신 분들은 아래의 링크를 참고해주세요.

 

Python : 파이썬 설치 및 가상환경 만들기

1. 파이썬 설치(현재 최신버전 3.8.3) 파이썬을 배우기에 앞서 파이썬을 설치해봅시다. 파이썬 홈페이지는 아래의 링크를 참고해주시면 됩니다. 현재 2020년 6월기준 파이썬 최신 버전은 3.8.3버전이

milkoon1.tistory.com

 

PostgreSQL : Window PostgreSQL(포스트-그레스-큐엘) 설치 방법

PostgreSQL은 관계형 데이터베이스 시스템의 일종이며, 오픈소스 DBMS이다. 1. PostgreSQL 다운로드 우선 PostgreSQL 공식홈페이지에 갑니다. 그리고 본인의 PC 사양에 맞는 것을 다운로드 합니다. PostgreSQL:

milkoon1.tistory.com


0. 개발환경

- Python : 3.8.3
- Django : 3.0.7
- PostgreSQL : 12.3
- psycopg2 : 2.8.5
- OS : Windows 10

 

1. 가상환경 접속 및 프로젝트 생성

# 가상환경으로 접근
C:\dev\Python\VENV>C:\dev\Python\VENV\dJangoVenv\Scripts\activate.bat

# 프로젝트생성
(dJangoVenv) C:\dev\Python>django-admin startproject mySite

# 프로젝트 상위 폴더 이름 바꾸기 - 상위 폴더와 하위폴더명이 동일하기에 상위폴더명을 변경
(dJangoVenv) C:\dev\Python>ren mySite finpmProject

# 서버실행
(dJangoVenv) C:\dev\Python\finpmProject>python manage.py runserver

 

2. 프로젝트 데이터베이스 변경하기

* PostgreSQL 설치 및 데이터베이스, 테이블 생성까지 완료한 상태라고 가정하고 프로젝트를 진행합니다. 만약 데이터베이스 생성을 하지 못하신 분들은 아래의 링크를 참고해주세요.

 

PostgreSQL : 윈도우(Window)에서 테이블 생성하는 방법

PostgreSQL 데이터베이스 서버를 접속하려면 몇 가지 정보를 지정해야합니다. 그것을 간략하게 말하자면, 실행되고 있는 호스트 이름이나 IP, 서버의 포트 번호, 서버로 접속할 역할 이름(사용자 이

milkoon1.tistory.com

 

Python 프로젝트를 생성해보시면 데이터베이스는 sqlite3으로 default되어있을겁니다. 저는 이제 sqlite가 아닌 PostgreSQL을 사용할 예정이라 이 부분을 변경하도록 하겠습니다. PostgreSQL로 데이터베이스 설정을 변경하려면 Python 프로젝트의 setting.py를 수정해야합니다.

#  변경 전
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# 형식 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': ‘<db_name>’,
        'USER': '<db_username>',
        'PASSWORD': '<password>',
        'HOST': '<db_hostname_or_ip>',
        'PORT': '<db_port>',
    }
}

# 변경 후
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'finpm',
        'USER': 'finpm_admin',
        'PASSWORD':'비밀번호',
        'HOST':'127.0.0.1',
        'PORT':'5432',
    }
}

* PostgreSQL의 psycopg2와 sqlalchemy 차이점 : psycopg2는 실행하고자 하는 쿼리를 스트링형태로 그대로 넘겨주면 되서 편하지만 쿼리 실행 결과가 python list형태로 반환되기 때문에 이를 다루기가 까다로운 점이 있습니다.  sqlalchemy는 쿼리를 조회하려면 meta를 이용해서 select 클래스를 사용해야 하기에 복잡합니다. 하지만 meta를 사용하지 않고 pandas의 read_sql를 이용해 조회하면 sql구문 그대로 조회가 가능합니다. psycopg2와 sqlalchemy 중 sqlalchemy를 추천하는 이유는 pandas만 이용할 때는 둘 중 아무거나 사용해도 무관하지만 read_sql_table의 경우 sqlalchemy 연결할 때만 동작이 가능합니다.

 

1) psycopg2 설치

# 가상환경으로 접근
C:\dev\Python\VENV>C:\dev\Python\VENV\dJangoVenv\Scripts\activate.bat

# psycopg2 설치
(dJangoVenv) C:\dev\Python\finpmProject>pip install psycopg2

# psycopg2 실행
(dJangoVenv) C:\dev\Python\finpmProject>python -c "import psycopg2"

 

2) 마이그레이션 및 슈퍼유저 생성

# 마이그레이션
(dJangoVenv) C:\dev\Python\finpmProject>python manage.py migrate

# django 관리자 생성
(dJangoVenv) C:\dev\Python\finpmProject>python manage.py createsuperuser --username finpm_admin

# 테스트 서버 실행 
(dJangoVenv) C:\dev\Python\finpmProject>python manage.py runserver

 

3) 데이터베이스 연동확인하기 

만약 연동이 성공되었으면 pyadmin4에서 해당 데이터베이스의 schema - Tables에서 Django와 연동된 테이블목록을 확인할 수 있습니다.

 

4) 127.0.0.1 확인하기

python manage.py runserver을 하면 테스트 서버를 실행하게 되는데 정상적으로 실행되는지 확인합니다.

위의 사이트는 admin 페이지로 아까 전 createsuperuser에서 등록했던 Username과 Password를 입력하면 됩니다.

정상적으로 로그인되는 것을 확인할 수 있었습니다.

Comments