SQLAlchemyで既存のデータベースに接続したい場合はどうするの?

2024年6月18日

既存のデータベースに接続するには、SQLAlchemyのcreate_engine関数を使用して、データベースエンジンと接続情報を指定します。以下に、既存のデータベースに接続する際のサンプルコードを示します。この例ではPostgreSQLデータベースを使用していますが、他のデータベースにも同様に接続できます。

まず、必要なパッケージをインストールします。

bash
pip install sqlalchemy psycopg2  # psycopg2はPostgreSQLを操作するためのドライバ

そして、以下がサンプルコードです。

python
from sqlalchemy import create_engine, Column, Integer, String, Sequence
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 既存のデータベースへの接続情報
DATABASE_URL = "postgresql://username:password@localhost:5432/your_database_name"

# PostgreSQL データベースへの接続
engine = create_engine(DATABASE_URL, echo=True)

# モデルのベースクラスを定義
Base = declarative_base()

# モデルクラスの定義
class User(Base):
    __tablename__ = "users"
    id = Column(Integer, Sequence("user_id_seq"), primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

# テーブルのメタデータを反映
Base.metadata.reflect(engine)

# セッションの作成
Session = sessionmaker(bind=engine)
session = Session()

# データの取得例
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

# セッションのクローズ
session.close()

この例では、DATABASE_URL変数に接続情報を指定し、create_engine関数でデータベースに接続しています。また、Base.metadata.reflect(engine)を使用して、既存のデータベースのテーブルのメタデータを反映しています。その後は通常のSQLAlchemyの操作が行えます。接続情報には各データベースエンジンに応じた形式でユーザー名、パスワード、ホスト、ポート、データベース名などを指定します。

未分類

Posted by ぼっち