SQLAlchemy란 파이썬이 제공하는 ORM이다.
이를 사용하면 SQL 코드를 쓰지 않고 파이썬 코드로 데이터베이스를 조작할 수 있다.
pip install flask-sqlalchemy
pip install flask-migrate
데이터베이스를 마이그레이션 하는 확장가능 flask-migrate도 같이 설치한다.
마이그레이션은 코드정보를 바탕으로 데이터베이스의 테이블 작성이나 컬럼 변경등을 실시하기 위한 기능이다.
코드 정보를 바탕으로 SQL이 발행되며, SQL 정보를 파일로 유지하기 위해 계속적으로 데이터베이스의 갱신이나 갱신전 상태로 되돌리는 롤백이 가능해 진다.
app.py를 다음과 같이 만든다.
from flask import Flask
from flask_migrate import Migrate
from models import db
app = Flask(__name__)
app.config.from_mapping(
SQLALCHEMY_DATABASE_URI='postgresql://{user}:{pw}@{url}/{db}'.format(
user=config.DB_USER,
pw=config.DB_PASS,
url=config.DB_HOST,
db=config.DB_NAME),
SQLALCHEMY_TRACK_MODIFICATIONS=False,
SQLAlchemy_ECHO=True
)
db.init_app(app)
Migrate(app,db)
import models
필자는 데이터베이스를 PostgreSQL로 설정하여서 URL을 저렇게 적었고 자신의 데이터베이스에 맞게 적어주어야 한다.
▼SQLALCHEMY_DATABASE_URI의 대표적인 데이터 소스
데이터베이스 | URL |
MySQL | mysql://username:password@hostname/database |
PostgreSQL | postgresql://username:password@hostname/database |
SQLite(Linux,macOS) | sqlite:////absolute/path/to/database |
SQLite(Windows) | sqlite:///c:/absolute/path/to/database |
models.py를 만들고 모델을 정의한다.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.String, primary_key=True)
pw = db.Column(db.String, nullable=False)
email = db.Column(db.String, nullable=False)
nickname = db.Column(db.String, nullable=False)
gender = db.Column(db.String, nullable=False)
birth = db.Column(db.String, nullable=False)
▼모델의 대표적인 컬럼 정의
SQLAlchemy 컬럼의 데이터 타입 |
DB 컬럼 | 설명 |
Boolean | TINYINT | 최솟값 -128, 최댓값 127 정수 (부호가 있는 경우) |
SmallInteger | TINYINT | 최솟값 -32768, 최댓값 32767 정수 (부호가 있는 경우) |
Integer | INT | 최솟값 -2147483648, 최댓값 2147483647 정수 (부호가 있는 경우) |
BigInteger | BIGINT | 최솟값 -9223372036854775808, 최댓값 9223372036854775807 정수 (부호가 있는 경우) |
Float | FLOAT | 부동 소수점 |
Numeric | DECIMAL | 10진수 |
String | VARCHAR | 문자열 |
Text | TEXT | 텍스트 |
Date | DATE | 날짜 |
Time | TIME | 시각 |
DateTime | DATETIME | 날짜와 시각 |
TimeStamp | TIMESTAMP | 날짜와 시각(날짜에 00을 허용하지 않는다) |
▼컬럼의 대표적인 옵션 정의
SQLAlchemy 옵션 | 설명 |
primary_key | 기본키 |
unique | 유니크키 |
index | 인덱스 |
nullable | NULL 허용 |
default | 디폴트 값 설정 |
이제 모델이 선언되었으므로 데이터베이스를 초기화하고 마이그레이션 파일을 작성한다.
마이그레이션 파일은 데이터베이스의 설계서와 같은 것으로 마이그레이션 파일을 실행하면 작성한 내용이 데이터베이스에 반영된다.
# 데이터베이스 초기화
flask db init
# 데이터베이스의 마이그레이션 파일 생성
flask db migrate
# 마이그레이션 정보를 실제로 데이터베이스에 반영하기위한 명령
flasg db upgrade
#마이그레이트한 데이터베이스를 적용하기 전의 상태로 되돌릴수 있다.
flask db downgrade
이 파일이 잘 생성이 되고
버전파일 안에 있는 파이썬 파일을 열어보면 실제로 데이터베이스를 만들어주는 코드가 있는것을 볼 수 있다.
이제 환경설정은 끝났으니 원하는 대로 만들면 된다!
데이터 조작 방법이 궁금하다면 여길 참고하길 바란다.
https://code-escape.tistory.com/101
SQLAlchemy를 이용한 데이터 조작
SQLAlchemy를 사용하여 SQL을 실행하는 방법은 크게 query filter를 이용하는 경우와 executer를 이용하는 경우가 있다. - query filter: 주로 검색 조건을 좁히거나 정렬하기 위해 사용한다. - executer: SQL을 실
code-escape.tistory.com
'플라스크' 카테고리의 다른 글
Flask SMTP html template 전송하기 (0) | 2023.04.15 |
---|---|
Flask Gmail SMTP 구현 (0) | 2023.04.15 |
AWS S3 파일 업로드 해보기 (0) | 2023.04.14 |
Flask create requirements.txt (0) | 2023.03.30 |
Flask 백엔드 개발 시작 (0) | 2023.03.30 |