[python] SQLAlchemy에서 다중 데이터베이스 연동하기

SQLAlchemy는 파이썬에서 사용되는 유명한 ORM(Object-Relational Mapping) 라이브러리입니다. SQLAlchemy를 사용하면 데이터베이스와의 상호작용을 쉽게 할 수 있습니다. 이번에는 SQLAlchemy를 사용하여 다중 데이터베이스를 연동하는 방법에 대해 알아보겠습니다.

다중 데이터베이스 설정하기

SQLAlchemy를 사용하여 다중 데이터베이스를 연동하려면, 각 데이터베이스에 대한 연결 설정을 정의해야 합니다. 이 설정은 각 데이터베이스의 종류와 접속 정보를 포함합니다. SQLAlchemy에서는 각 데이터베이스에 대해 별도의 엔진을 생성하는 방식을 사용하여 연결합니다.

다음은 MySQL과 SQLite 데이터베이스를 연동하기 위한 예시입니다.

from sqlalchemy import create_engine

# MySQL 데이터베이스 연결 설정
mysql_engine = create_engine('mysql://username:password@localhost/db_name')

# SQLite 데이터베이스 연결 설정
sqlite_engine = create_engine('sqlite:///path/to/sqlite.db')

위 예시에서는 create_engine 함수를 사용하여 연결 설정을 정의했습니다. MySQL 연결 설정의 경우 mysql://username:password@localhost/db_name 형식으로 설정하고, SQLite 연결 설정의 경우 sqlite:///path/to/sqlite.db 형식으로 설정합니다.

다중 데이터베이스 사용하기

다중 데이터베이스를 사용하려면, 각 데이터베이스에 대한 세션을 생성해야 합니다. SQLAlchemy에서 세션은 트랜잭션을 관리하는 객체입니다. 데이터베이스에 접근하고 데이터를 검색, 수정, 저장하는 데 사용됩니다.

from sqlalchemy.orm import sessionmaker

# 데이터베이스 세션 생성
Session_mysql = sessionmaker(bind=mysql_engine)
Session_sqlite = sessionmaker(bind=sqlite_engine)

# MySQL 세션 생성
mysql_session = Session_mysql()

# SQLite 세션 생성
sqlite_session = Session_sqlite()

위 예시에서는 sessionmaker 함수를 사용하여 각 엔진에 대한 세션을 생성했습니다. 생성된 세션을 사용하여 데이터베이스에 접근 및 작업을 수행할 수 있습니다.

다중 데이터베이스 사용 예시

다음은 다중 데이터베이스를 사용하는 예시입니다. MySQL 데이터베이스에서 User 테이블을 조회하고, SQLite 데이터베이스에 User 테이블을 추가합니다.

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

# 기본 베이스 클래스 정의
Base = declarative_base()

# MySQL 데이터베이스의 'users' 테이블 정의
class User_mysql(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)

# SQLite 데이터베이스의 'users' 테이블 정의
class User_sqlite(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)

# MySQL에서 User 테이블 조회
mysql_user = mysql_session.query(User_mysql).get(1)
print(mysql_user.name)

# SQLite에 User 테이블 추가
sqlite_user = User_sqlite(name='John Doe')
sqlite_session.add(sqlite_user)
sqlite_session.commit()

위 예시에서는 declarative_base 함수를 사용하여 베이스 클래스를 정의하고, 각 데이터베이스에 맞는 테이블 모델을 작성했습니다. MySQL 데이터베이스에서는 User_mysql 테이블을 조회하고, SQLite 데이터베이스에는 User_sqlite 테이블을 추가했습니다.

결론

SQLAlchemy를 사용하여 다중 데이터베이스를 연동하는 방법에 대해 알아보았습니다. SQLAlchemy를 활용하면 여러 데이터베이스를 간단하게 다룰 수 있으며, 각 데이터베이스에 맞는 작업을 수행할 수 있습니다. SQLAlchemy의 자세한 사용 방법은 공식 문서를 참고하시기 바랍니다.

참고 자료: