すべてのプロダクト
Search
ドキュメントセンター

Lindorm:Python ORM フレームワークに基づくアプリケーション開発

最終更新日:Feb 04, 2026

このトピックでは、Python ORM フレームワークを使用して LindormTable に接続し、使用する方法について説明します。

前提条件

操作手順

  1. 次のコマンドを実行して、MySQL データベースへの接続に使用する PyMySQL ライブラリをインストールします。

    pip install PyMySQL
  2. 次のコマンドを実行して、SQLAlchemy フレームワークをインストールします。

    pip install SQLAlchemy
  3. 接続パラメーターを設定します。

    engine = create_engine('mysql+pymysql://<user>:<password>@<lindorm_mysql_addr>:33060/<database>', echo=True)

    パラメーター

    パラメーター

    説明

    user

    ユーザーのパスワードを忘れた場合は、LindormTable クラスター管理システムで変更できます。 詳細については、「ユーザーパスワードの変更」をご参照ください。

    password

    lindorm_mysql_addr

    LindormTable の MySQL 互換エンドポイント。 エンドポイントの取得方法の詳細については、「エンドポイントの表示」をご参照ください。

    重要
    • アプリケーションが Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、セキュリティの向上とネットワーク遅延の削減のため、VPC を使用して Lindorm インスタンスに接続することを推奨します。

    • アプリケーションがオンプレミスにデプロイされている場合は、インターネット経由で Lindorm インスタンスに接続する前に、コンソールでパブリックエンドポイントを有効にする必要があります。 パブリックエンドポイントを有効にするには、コンソールで Database Connections > Wide Table Engine を選択します。 [Wide Table Engine] タブで、[Enable Public Endpoint] をクリックします。

    • VPC 経由で Lindorm インスタンスに接続する場合は、lindorm_mysql_addr を MySQL 互換の [VPC] エンドポイントに設定します。 インターネット経由で Lindorm インスタンスに接続する場合は、lindorm_mysql_addr を MySQL 互換の [Internet] エンドポイントに設定します。

    database

    接続先のデータベース名。 デフォルトでは、クライアントは default という名前のデータベースに接続されます。

  4. この例では、LindormTable に接続してテーブルを作成し、データを挿入する方法を示します。

    # テーブルを作成します。
    Base.metadata.create_all(engine)
    
    # セッションオブジェクトを作成します。
    session = Session()
    # Player オブジェクトを作成します。
    new_player = Player(player_id = 1001, player_name = "john", player_height = 2.08)
    # Lindorm にデータを書き込みます。
    session.add(new_player)
    # 複数行のデータを Lindorm に書き込みます。
    session.add_all([
        Player(player_id=1002, player_name="bob", player_height=1.65),
        Player(player_id=1003, player_name="smith", player_height=1.82),
    ])
    session.commit()

サンプルコード

完全なサンプルコードを次に示します。

from sqlalchemy import create_engine
from sqlalchemy import Column, String, Integer, Float
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker


Base = declarative_base()
# Player オブジェクトを定義します。
class Player(Base):
    # テーブル名:
    __tablename__ = 'player'
    # テーブル構造:
    player_id = Column(Integer, primary_key=True,autoincrement=False)
    player_name = Column(String(255))
    player_height = Column(Float)
    def __str__(self):
        return " ".join(str(item) for item in (self.player_id,self.player_name,self.player_height))


# データベース接続を初期化します。 必要に応じて接続パラメーターを変更してください。
engine = create_engine('mysql+pymysql://user:test@ld-bp1l39h99192d****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/default', echo=True)
Session = sessionmaker(bind=engine)

# テーブルを作成します。
Base.metadata.create_all(engine)

# セッションオブジェクトを作成します。
session = Session()
# Player オブジェクトを作成します。
new_player = Player(player_id = 1001, player_name = "john", player_height = 2.08)
# Lindorm にデータを書き込みます。
session.add(new_player)
# 複数行のデータを Lindorm に書き込みます。
session.add_all([
    Player(player_id=1002, player_name="bob", player_height=1.65),
    Player(player_id=1003, player_name="smith", player_height=1.82),
])
session.commit()

# player_id が 1001 のデータをクエリします。
rows = session.query(Player).filter(Player.player_id == 1001).all()
print([row.__str__() for row in rows])


# player_id が 1002 のデータを削除します。
session.query(Player).filter(Player.player_id == 1002).delete()
session.commit()

# player_id が 1003 のデータを更新します。
session.query(Player).filter(Player.player_id == 1003).update({"player_name":"brown"})
session.commit()

# すべてのデータをクエリします。
rows = session.query(Player).all()
print([row.__str__() for row in rows])

正常に実行されると、次の クエリ結果 が返されます。

['1001 john 2.08']
['1001 john 2.08', '1003 brown 1.82']