카테고리 없음

Flask와 SQLite 연결하기

임베디드 친구 2025. 9. 1. 21:10
728x90
반응형

Flask와 SQLite 연결하기

안녕하세요! 오늘은 Python Flask와 SQLite를 연결하는 방법을 알아보겠습니다. SQLite는 가볍고 사용이 간편한 관계형 데이터베이스로, Flask와 잘 어울립니다. 이번 포스팅에서는 SQLite 설정부터 Flask와의 통합, 기본 CRUD(Create, Read, Update, Delete) 연산을 다룰 것입니다.

1. Flask와 SQLite의 장점

  • SQLite는 별도의 서버가 필요 없는 내장형 데이터베이스입니다.
  • Flask는 간결하면서도 강력한 기능을 제공하는 Python 웹 프레임워크입니다.
  • 두 도구를 함께 사용하면 빠르게 프로토타입을 제작하거나 간단한 프로젝트를 개발하기에 적합합니다.

2. 준비물

  • Python 3.7 이상
  • Flask 라이브러리

2.1. Flask 설치

pip install flask

2.2. SQLite3 설치 확인

Python에는 기본적으로 SQLite가 내장되어 있습니다. 아래 명령어로 확인할 수 있습니다.

python
>>> import sqlite3
>>> sqlite3.version

3. 프로젝트 구조

프로젝트의 기본 구조는 다음과 같습니다:

flask_sqlite_demo/
│
├── app.py         # Flask 애플리케이션
├── templates/     # HTML 템플릿 파일
│   └── index.html
└── database.db    # SQLite 데이터베이스 파일

4. SQLite 데이터베이스 생성

4.1. SQLite 초기화 코드

app.py에서 SQLite 데이터베이스를 초기화하는 코드를 작성합니다.

import sqlite3

# 데이터베이스 초기화 함수
def init_db():
    conn = sqlite3.connect('database.db')
    cursor = conn.cursor()

    # 테이블 생성
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        email TEXT UNIQUE NOT NULL
    )
    ''')

    conn.commit()
    conn.close()

if __name__ == "__main__":
    init_db()

위 코드를 실행하면 database.db 파일과 users 테이블이 생성됩니다.

5. Flask와 SQLite 연결

5.1. Flask 애플리케이션 생성

Flask와 SQLite를 통합한 애플리케이션 코드를 작성합니다.

from flask import Flask, request, jsonify, render_template
import sqlite3

app = Flask(__name__)

# SQLite 데이터베이스 연결 함수
def get_db_connection():
    conn = sqlite3.connect('database.db')
    conn.row_factory = sqlite3.Row
    return conn

@app.route("/")
def index():
    conn = get_db_connection()
    users = conn.execute('SELECT * FROM users').fetchall()
    conn.close()
    return render_template('index.html', users=users)

@app.route("/add", methods=["POST"])
def add_user():
    name = request.form['name']
    email = request.form['email']

    conn = get_db_connection()
    conn.execute('INSERT INTO users (name, email) VALUES (?, ?)', (name, email))
    conn.commit()
    conn.close()

    return jsonify({"message": "User added successfully!"})

if __name__ == "__main__":
    app.run(debug=True)

5.2. HTML 템플릿 파일

templates/index.html 파일을 생성합니다:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>User List</title>
</head>
<body>
    <h1>User List</h1>
    <ul>
        {% for user in users %}
        <li>{{ user['name'] }} - {{ user['email'] }}</li>
        {% endfor %}
    </ul>

    <h2>Add User</h2>
    <form action="/add" method="post">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required><br>

        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required><br>

        <button type="submit">Add</button>
    </form>
</body>
</html>

6. 실행 및 테스트

  1. app.py를 실행합니다:
    python app.py
  2. 브라우저에서 http://127.0.0.1:5000/로 이동합니다.
  3. 사용자 목록을 확인하고 새로운 사용자를 추가해 보세요.

7. 결론

이번 포스팅에서는 Flask와 SQLite를 사용하여 간단한 웹 애플리케이션을 구축해 보았습니다. SQLite의 가벼움과 Flask의 간결함을 결합하면 빠르게 애플리케이션을 개발할 수 있습니다.

반응형