안 쓰던 블로그

[Flask] Flask-SQLAlchemy 본문

언어/파이썬

[Flask] Flask-SQLAlchemy

proqk 2020. 9. 3. 13:57
반응형

객체에 데이터 모델을 정의하고, 이를 DB와 매핑해 주는 것을 ORM(Object Relaition Model)이라고 한다

더 쉽게 말하자면 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다

 

객체 지향 프로그래밍: 클래스 사용

관계형 데이터베이스: 테이블 사용

객체 모델과 관계형 모델 간에 불일치가 존재하는데, ORM으로 해결할 수 있다

 

ORM이 있기 때문에 코드가 특정 DB에 종속되지 않고 기본 객체 만으로 데이터를 기술할 수 있다

 

파이썬에서 ORM으로 많이 쓰이는 것 중에 SQLAlchemy가 있고, 그걸 플라스크에서 플러그인처럼 쓸 수 있게 만든 것이 Flask-SQLAlchemy이다

 

pip install flask_sqlalchemy

Flask-SQLAlchemy를 사용하기 위해 설치한다

 

 

import os #디렉토리 절대 경로
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

dbdir = os.path.abspath(os.path.dirname(__file__)) #현재 파일이 있는 디렉토리 절대 경로
dbfile = os.path.join(dbdir, 'db.sqlite') #데이터베이스 파일을 만든다

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True #사용자 요청이 끝나면 커밋=DB반영 한다
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False #추가 메모리를 사용하므로 꺼둔다

db = SQLAlchemy(app)

class User(db.Model): #데이터 모델을 나타내는 객체 선언
    __tablename__ = 'user_table' #테이블 이름
    
    id = db.Column(db.Integer, primary_key=True) #칼럼 생성
    name = db.Column(db.String(32), unique=True, nullable=False)

    def __repr__(self): #데이터 모델 객체도 파이썬 객체처럼 메소드 사용 가능
        return f"<User('{self.id}', '{self.username}', '{self.email}')>"
    

db.create_all()

@app.route('/')
def hello():
	return 'Hello World!'

실행하면 db.sqlite이름으로 데이터베이스 역할을 하는 파일이 생성된다

 

 

참고

opentutorials.org/module/3669/22070

ohdowon064.tistory.com/110?category=850203

반응형
Comments