# SQLAlchemy :Flask에서 데이터베이스 연결하기 Flask는 자체적으로 데이터베이스를 관리하는 기능은 제공하지 않지만, SQLAlchemy와 같은 ORM(Object-Relational Mapper) 라이브러리를 사용하여 다양한 데이터베이스를 쉽게 연결하고 관리할 수 있습니다. SQLAlchemy는 파이썬 객체를 데이터베이스 테이블에 매핑하여 데이터베이스와 상호 작용하는 것을 더욱 직관적으로 만들어줍니다. ```bash pip install Flask SQLAlchemy ``` ## 주요 개념 * SQLAlchemy: 파이썬 ORM으로, 객체와 관계형 데이터베이스 테이블을 매핑하는 역할을 합니다. * Model: 데이터베이스 테이블과 대응되는 파이썬 클래스입니다. * Session: 데이터베이스와의 상호 작용을 위한 세션 객체입니다. ## 1. Flask 애플리케이션 생성 및 설정 ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 데이터베이스 설정 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db' # SQLite 사용 예시 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 추적 비활성화 db = SQLAlchemy(app) ``` * SQLALCHEMY_DATABASE_URI: 데이터베이스 연결 문자열을 설정합니다. * SQLALCHEMY_TRACK_MODIFICATIONS: 모델 변경 사항을 자동으로 추적하는 기능을 비활성화합니다. ## 2. 모델 정의 ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __repr__(self): return '' % self.username ``` * db.Model: SQLAlchemy 모델을 상속받아 테이블과 매핑할 클래스를 정의합니다. * db.Column: 테이블의 각 열을 정의합니다. ## 3. 데이터베이스 생성 및 모델 초기화 ```python with app.app_context(): db.create_all() ``` 위 코드를 실행하면 app.db라는 SQLite 데이터베이스가 생성되고, User 모델에 해당하는 테이블이 생성됩니다. ## 4. 데이터베이스 CRUD 작업 ```python # 데이터 추가 user = User(username='admin', email='admin@example.com') db.session.add(user) db.session.commit() # 데이터 조회 users = User.query.all() for user in users: print(user.username) # 데이터 수정 user = User.query.filter_by(username='admin').first() user.email = 'new_email@example.com' db.session.commit() # 데이터 삭제 db.session.delete(user) db.session.commit() ```