SQLAlchemy 선택 배경

Django 스터디를 하면서 프로젝트 들어가기 이전에 여러가지 관련 라이브러리를 찾다가 다른 스터디분의 “Mybatis 처럼 mapper 형식으로 DB를 사용할 수 있는 라이브러리가 있는가?” 라는 질문을 받고 이것저것 찾다보니 SQLAlchemy 를 찾게 되었다.

SQLAlchemy 는 주로 Flask와 연동해서 사용하는 경우가 많았는데 Flask 연동중에 예상치 못한 문제가 생겻고 아직까지 해결 못해서 Django와 연동해서 사용해볼까 한다.
공식 홈페이지 : http://www.sqlalchemy.org/

설치

1
2
pip install sqlalchemy // sqlalchemy 설치
pip install mysqlclient // mysql 에 접속을 위해 필요하다.

버전확인

python 스크립트를 이용해서 설치가 되었는지 확인 가능하다

1
2
import sqlalchemy
print sqlalchemy.__version__

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, Unicode, String
from sqlalchemy.ext.declarative import declarative_base

name = "YourDBUserName"
password = "YourDBPassword"
host = "YourDBAddress"
db = "ChooseDatabase"

re_str = 'mysql://' + name + ':' + \
password + '@' + host + '/' + db + ''

# DB 접속을 위해 Enging 객체를 생성해야 하는데
# sqlalchemy.create_engine 에 DB접속 정보를 넘겨주면 생성할 수 있다.
engine = create_engine(re_str, echo=True)

# 매핑 선언을 위해 declarative_base를 사용한다.
# ORM이 관리할 데이터 테이블을 매핑 시키기 위해
# 해당 테이블의 정보가 들어있는 클래스 declarative_base 를 상속해서 만든다.
Base = declarative_base()

class Store(Base):
__tablename__ = 'stores'

id = Column(Integer, primary_key=True)
name = Column(Unicode(50), nullable=False)
phone = Column(String(20))

# create_all 메소드를 호출하면 Base가 알고 있는 모든 테이블이 생성된다.
Base.metadata.create_all(engine)

출처

pywebcookbook
SQLAlchemy-DB-Connection 설정방법