Hi Hi

'Django 블로그 만들기'에 해당되는 글 3건

  1. [Python Djago] 3. DB테이블로 만들기

[Python Djago] 3. DB테이블로 만들기

 


Django
는 모델을 DB 테이블로 만들어 주는 편히한 기능을 제공한다.
(일일이 DB에 쿼리(query)문을 날려서 DB 작업을 하지 않고 모델에게 다소 추상화된 요청을 하여 DB 작업을 처리 하듯이, 테이블 생성 역시 하나 하나 테이블 스키마(schema) 디자인을 할 필요 없이 모델을 만든 뒤 Django 에게 테이블 생성을 시킬 수 있다.)

이 작업은 Django 프로젝트에 어플리 케이션을 추가하거나 내장 웹서버를 실행하는데 도움을 준
manage.py 로 할 수 있다.


프로젝트에 어플리케이션 등록

모델은 어플리케이션 단위로 존재한다. 어떤 어플리케이션에 있는 모델을 Django 프로젝트 안에서 활성화하려면 어플리케이션을 프로젝트에 등록해야 한다.

- 활성화한 어플리케이션은 DB 테이블 스키마문을 만들어 주는 기능을 쓸 수 있다,
- 각 모델 개체에서 DB 기능들(API)을 쓸 수 있게 된다,

manage.py startapp 명령어로 어플리 케이션을 생성했다,
그런데 이는 어디까지나 생성이며 프로젝트에 등록을 하는 일은 따로 있다. 등록은 프로젝트 설정 파일인 settings.py 에 써 넣으면 된다.

settings.py 파일을 편집기로 연 뒤 맨 아래로 내려가보자.

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',

)

여기에 등로하는 것이다,  프로젝트에 있는 blog 라는 어플리케이션을 등록 할 (activate) 것이므로

'webroot.blog',

이 줄을 추가하면 된다. 

INSTALLED_APPS = (
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.sites',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'webroot.blog',
)

 줄 마지막에 쉼표가 빠지지 않고 있는 점에 주의하자. 이렇게 하면 프로젝트에 있는 blog 어플리케이션을 등록하여 활성하한 것이다.


settings. py 맨 위로 올라가 , DB 설정을 해야 한다.

'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }

여기에 DB 연결 정보를 써넣는다.

DATABASE_ENGINE 은 연결할 DBMS 종류이다. Django 는 mysql, sqlite, sqlite, postgresql, oracle 등 다양한 DBMS를 지원한다.
DATABASE_NAME USER, PASSWORD, HOST 는 DB에 연결하는 계정 정보인데 자신이 생성하거나 가지고 있는 연결 정보를 쓰면 된다. DATABASE_HOST아 PORT는 따로 값을 넣지 않고 빈값으로 설정하면 이미 설정된 기본값으로 설정된다.

    'default': {
        'ENGINE': 'django.db.backends.',
        'NAME': 'test',                     
        'USER': 'kyy',                   
        'PASSWORD': '12345',                  
        'HOST': '',                    
        'PORT': '',                    
    }

테이블 SQL 문 확인해보기

설정을 마치고 나면 manage.py를 이용해서 모델을 DB 테이블로 만들 수 있게 된다, 바로 만들기 전에 모델을 제대로 만들었는지 여부를 확인할 수 있다.

manage.py sql blog

manage.py 에는 여러 기능이 있는데 그 중 sql 명령어를 쓴 것이다. 지정한 어플리케이션이 있는 모델을 테이블 sql 문으로 만드는 것이다. 문제가 없으면 BEGEIN;  로 시작해서 테이블 시키마 sql 문에 나오고 COMMIT;으로 끝난다.

DB에 테이블 생성해넣기

sql문이 잘 나온다면 DB에 반영하여 모델을 테이블로 만들 수 있다.
manage.py에 있는 syncdb라는 명령어 를 쓰면 된다.

manage.py syncdb

이러면 Creating table 테이블이름 이런 줄이 화면에 흘러가. 아마 처음 실행했다면

You just installed Django‟s auth system, which means you don‟t have any superusers defined. Would you like to create one now? (yes/no):

Django에서 제공하는 인증 체계를 설칬는데 아직 최고 권한 이용자가 없으니 지금 하나 만들어 보라고 권하는것이다. yes 라고 쳐서 하나 만들어 두자. 

이 계정은 나중에 쓸 일이 있다.


참고:http://www.hannal.net