[파이썬] Flask의 데이터베이스 연동

Flask는 파이썬으로 웹 어플리케이션을 만들기 위한 경량화된 프레임워크입니다. Flask를 사용하면 데이터베이스와의 연동을 통해 웹 애플리케이션에 데이터를 저장하고 검색할 수 있습니다. 이번 블로그 포스트에서는 Flask와 SQLite3 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.

SQLite3 데이터베이스 설정

먼저, Flask와 SQLite3 데이터베이스를 연동하기 위해 필요한 패키지를 설치해 봅시다. 터미널에서 다음 명령을 실행하세요:

pip install flask
pip install sqlite3

이제 데이터베이스 파일을 생성하고 테이블을 만들어야 합니다. 예를 들어, users.db라는 이름의 데이터베이스 파일과 users라는 테이블을 생성하고 싶다면 다음과 같은 코드를 사용할 수 있습니다:

import sqlite3

conn = sqlite3.connect('users.db')
c = conn.cursor()

c.execute('''
    CREATE TABLE users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        username TEXT NOT NULL,
        email TEXT NOT NULL
    );
''')

conn.commit()
conn.close()

Flask 애플리케이션에서 데이터베이스 사용하기

이제 Flask 애플리케이션에서 데이터베이스를 사용하는 방법을 알아보겠습니다. 먼저, Flask와 데이터베이스 모듈을 임포트해야 합니다:

from flask import Flask
import sqlite3

그런 다음, Flask 애플리케이션을 생성합니다:

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'

SECRET_KEY는 Flask 애플리케이션의 보안을 강화하기 위한 키입니다. 이 키를 이용해서 세션과 암호화된 쿠키를 생성합니다.

다음으로, Flask 애플리케이션에서 데이터베이스를 사용하기 위해 데코레이터를 정의해야 합니다:

@app.teardown_appcontext
def close_database(exception=None):
    db = getattr(g, '_database', None)
    if db is not None:
        db.close()

@app.before_request
def before_request():
    g.db = sqlite3.connect('users.db')

@app.route('/users')
def get_users():
    cursor = g.db.execute('SELECT * FROM users')
    users = [dict(id=row[0], username=row[1], email=row[2]) for row in cursor.fetchall()]
    return jsonify(users)

위의 예시에서는 /users 경로로 GET 요청이 오면 데이터베이스에서 모든 사용자를 조회해서 JSON 형식으로 반환하는 API를 만들었습니다.

데이터베이스에서 특정 사용자를 조회하거나 새로운 사용자를 등록하는 것도 가능합니다. 이는 데이터베이스 연동 방법에 따라 달라질 수 있습니다.

마무리

이렇게 Flask 애플리케이션과 SQLite3 데이터베이스를 연동하여 데이터를 저장하고 검색하는 방법에 대해 알아보았습니다. 이를 통해 웹 애플리케이션에 다양한 기능을 추가할 수 있습니다. Flask 데이터베이스 연동은 파이썬 개발자에게 매우 유용한 기능 중 하나이며, 더욱 복잡한 웹 애플리케이션을 구축하는 데 도움이 될 것입니다.

Flask 공식 문서와 SQLite3 문서를 참조하여 더 많은 기능을 알아보세요. Happy coding!