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. 실행 및 테스트
app.py
를 실행합니다:python app.py
- 브라우저에서
http://127.0.0.1:5000/
로 이동합니다. - 사용자 목록을 확인하고 새로운 사용자를 추가해 보세요.
7. 결론
이번 포스팅에서는 Flask와 SQLite를 사용하여 간단한 웹 애플리케이션을 구축해 보았습니다. SQLite의 가벼움과 Flask의 간결함을 결합하면 빠르게 애플리케이션을 개발할 수 있습니다.
반응형