[python] SQLAlchemy를 사용한 RESTful API 개발
SQLAlchemy는 Python에서 사용되는 오픈 소스 ORM(Object-Relational Mapping) 라이브러리입니다. 이를 사용하여 간단하고 효율적인 RESTful API를 개발할 수 있습니다.
1. SQLAlchemy 설치
먼저 SQLAlchemy를 설치해야 합니다. pip를 사용하여 다음과 같이 설치할 수 있습니다.
pip install SQLAlchemy
2. 데이터베이스 연결
SQLAlchemy를 사용하여 데이터베이스에 연결해야 합니다. 다음과 같이 연결할 수 있습니다.
from sqlalchemy import create_engine
# 데이터베이스 URL 설정
db_url = "postgresql://username:password@localhost:5432/database"
# 데이터베이스 연결
engine = create_engine(db_url)
3. 모델 정의
다음으로 ORM을 사용하여 모델을 정의해야 합니다. 간단한 예제를 살펴보겠습니다.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
# Base 클래스 정의
Base = declarative_base()
# 모델 클래스 정의
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
def __repr__(self):
return f"<User(id={self.id}, name={self.name}, email={self.email})>"
위 예제는 User
모델을 정의하는 방법입니다. User
모델은 id
, name
, email
속성을 가지고 있습니다.
4. API 엔드포인트 구현
API 엔드포인트를 구현하기 위해 Flask를 사용하겠습니다. Flask는 간단하고 가벼운 웹 프레임워크입니다.
from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
# Flask 애플리케이션 생성
app = Flask(__name__)
# SQLAlchemy 설정
app.config['SQLALCHEMY_DATABASE_URI'] = db_url
db = SQLAlchemy(app)
# API 엔드포인트 구현
@app.route('/users', methods=['GET'])
def get_users():
users = db.session.query(User).all()
return jsonify([{'id': user.id, 'name': user.name, 'email': user.email} for user in users])
@app.route('/users', methods=['POST'])
def create_user():
data = request.get_json()
user = User(name=data['name'], email=data['email'])
db.session.add(user)
db.session.commit()
return jsonify({'status': 'success', 'message': 'User created'})
# 애플리케이션 실행
if __name__ == '__main__':
app.run()
위 예제는 /users
엔드포인트를 구현한 것입니다. GET
메서드로 호출할 경우 모든 사용자의 정보를 반환하고, POST
메서드로 호출할 경우 새로운 사용자를 생성합니다.
결론
SQLAlchemy를 사용하면 Python으로 간단하고 효율적인 RESTful API를 개발할 수 있습니다. SQLAlchemy의 강력한 ORM 기능을 활용하여 데이터베이스와의 상호 작용을 쉽게 처리할 수 있습니다.