기본 콘텐츠로 건너뛰기

Flask 04. FLask-SQLAlcemy

Flask 04. FLask-SQLAlcemy

MVC에서 flask는 controller에 필요한 것을 해준다. 라우팅을 하면서 어떤 로직을 수행할 것인지를 결정한다.

SQLAlcemy는 Model부분을 도와주는 라이브러리이다. orm(object relational mapper)로서 파이썬 안에서 객체로 클래스나 함수로 사용할 수 있다.

import os from flask import Flask from flask_sqlalchemy import SQLAlchemy basedir = os.path.abspath(os.path.dirname(__file__)) dbfile = os.path.join(basedir, 'db.sqlite') app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + dbfile app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class Test(db.Model): __tablename__ = 'test_table' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), unique=True) db.create_all() @app.route('/') def hello(): return 'Hello World!'

# sqlite라는 데이터베이스를 사용하는데 따로 설치없이 하나의 파일을 지정해서 그것을 데이터베이스로 사용한다.

# 프로젝트 폴더를 절대경로로 사용하기 위해 os라이브러리를 가져오고 절대경로를 설정한다.

톺아보기

import os from flask import Flask from flask_sqlalchemy import SQLAlchemy

os 모듈은 파이썬을 이용해 파일을 복사하거나 디렉터리를 생성하고 특정 디렉터리 내의 파일 목록을 구하고자 할 때 사용한다. 데이터베이스 경로를 설정하기 위해서 가져온다.

basedir = os.path.abspath(os.path.dirname(__file__)) dbfile = os.path.join(basedir, 'db.sqlite')

현재 파일의 디렉토리의 절대경로가 나온다.

현재 디렉토리에 데이터베이스 파일을 만들었다.

app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + dbfile app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

teardown일 때 커밋을 한다.

teardown은 사용자가 요청하고 사용자한테 원하는 정보를 전달하면 이 순간이 teardown이다. 즉, 사용자 요청의 끝을 의미한다.

commit을 해야 쌓아져있던 동작을 실제 데이터베이스에 반영한다.

db = SQLAlchemy(app)

이제 db변수를 통해서 데이터를 넣기도 하고 모델을 만들기도 한다.

# db안에 있는 db.model 클래스를 지정해서 클래스를 만들게 되면 Test는 하나의 모델이 된다. class Test(db.Model): # Test는 하나의 모델이 되었다. 현재 Test의 스키마는 클래스의 속성으로 설정한다. __tablename__ = 'test_table' # 데이터베이스에 들어갈 때 테이블 명을 지정. id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), unique=True) # 이 클래스를 통해서 데이터베이스에 접근하면 된다. 그 내부적인 것은 알 필요가 없다. db.create_all() # 데이터베이스 생성 함수

이런 식으로 데이터베이스 역할을 하는 파일이 생성된다.

from http://ohdowon064.tistory.com/110 by ccl(A) rewrite - 2020-03-11 01:07:04

댓글

이 블로그의 인기 게시물

Flask 13. pythonanywhere에 배포하기

Flask 13. pythonanywhere에 배포하기 Login: PythonAnywhere It's always a pleasure to hear from you! Ask us a question, or tell us what you love or hate about PythonAnywhere. We'll get back to you over email ASAP. Sorry, there was an error connecting to the server. Please try again in a few moments... www.pythonanywhere.com from http://ohdowon064.tistory.com/124 by ccl(A) rewrite - 2020-03-11 15:54:10

[ubuntu] FLASK_APP

[ubuntu] FLASK_APP Development/Debugging 🐞 FLASK_ENV=development FLASK_APP = app.py flask run zsh: command not found: FLASK_APP ✔️ FLASK_ENV=development FLASK_APP=app.py flask run 띄어쓰기를 해서 저런 오류를 출력할수도 있구나 😲 참고 : 108p에서 FLASK가 FKAS로 오타나있다. from http://hee-stories.tistory.com/18 by ccl(A) rewrite - 2020-03-24 17:20:11