本ドキュメントでは、SQLAlchemyを使用してOceanBase Cloudクラウドデータベースに接続し、テーブルの作成、データの挿入、データの更新、データのクエリなどの基本的なデータベース操作を実行する方法について説明します。
前提条件
- Python 3.xおよびpipがインストールされていること。
- OceanBase Cloudクラウドデータベースのアカウントを登録し、クラスタインスタンスとOceanBase Cloud MySQL互換モードテナントを作成していること。詳細は、クラスタインスタンスの作成およびテナントの作成をご参照ください。
操作手順
- OceanBase Cloudクラウドデータベースの接続文字列を取得します。
- SQLAlchemyライブラリをインストールします。
test.pyファイルを作成し、データベース接続情報を入力します。test.pyファイルを実行します。
操作手順1:OceanBase Cloudクラウドデータベースの接続文字列の取得
OB Cloudクラウドコンソールにログインします。インスタンス一覧ページで対象インスタンスの情報を展開し、対象テナントの下で**接続** > **接続文字列を取得**を選択します。
詳細な操作については、接続文字列の取得をご参照ください。
作成済みのOceanBase Cloudクラウドデータベースに基づいて、以下のURLの対応する情報を入力します。
obclient -h$host -P$port -u$user_name -p$password -D$database_nameパラメータの説明:
$host:OceanBase Cloudクラウドデータベースの接続アドレスを指定します。例:t********.********.oceanbase.cloud。$port:OceanBase Cloudクラウドデータベースの接続ポートを指定します。デフォルトは3306です。$database_name:アクセスするデータベース名を指定します。
注意
テナントに接続するユーザーは、該当データベースに対する
CREATE、INSERT、UPDATE、およびSELECT権限を持っている必要があります。アカウント権限の詳細については、アカウントの作成と管理をご参照ください。$user_name:データベースにアクセスするアカウントを指定します。$password:アカウントのパスワードを指定します。
例は以下のとおりです:
```shell
obclient -h t********.********.oceanbase.cloud -P3306 -u mysql001 -p****** -Dtest
```
操作手順2:SQLAlchemyライブラリのインストール
SQLAlchemyは、Pythonで最も人気のあるORM(オブジェクト関係マッピング)ライブラリの1つであり、SQLツールキットとORMシステムを提供してデータベース操作を簡素化します。SQLAlchemyは、MySQL、PostgreSQL、SQLiteなど、複数のデータベースバックエンドに対応しています。
コマンドプロンプトまたはPowerShellターミナルを開き、以下のコマンドを実行してSQLAlchemyライブラリをインストールします。
pip install sqlalchemy mysqlclient
インストールが完了したら、以下のコマンドを使用してインストールが成功したかどうかを確認できます。
pip list | grep SQLAlchemy
説明
SQLAlchemyは強力なORMライブラリであり、CoreとORMの2つの使用方法を提供します。CoreはSQL式言語を提供し、ORMはオブジェクト関係マッピング機能を提供します。本ドキュメントの例では、主にORM方式を使用します。
操作手順3:test.pyファイルの作成とデータベース接続情報の入力
手順1:OceanBase Cloudクラウドデータベースの接続文字列の取得の情報に基づいてtest.pyファイルを作成し、データベース接続情報を入力します。
test.pyという名前のファイルを作成します。test.pyファイルに以下の内容を入力し、実際の状況に応じてデータベース接続情報を変更します。test.pyファイルの内容例は以下のとおりです:from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
# 数据库连接信息 DB_USER = 'mysql001' DB_PASSWORD = '' DB_HOST = 't****.******.oceanbase.cloud' DB_PORT = 3306 DB_NAME = 'test'
DATABASE_URL = f"mysql+mysqldb://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
engine = create_engine(DATABASE_URL)
Base = declarative_base()
class User(Base): tablename = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
age = Column(Integer)
def __repr__(self):
return f"<User(id={self.id}, name='{self.name}', age={self.age})>"
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine) session = Session()
new_users = [ User(name='John', age=20), User(name='Lucy', age=25), User(name='Tom', age=30) ] session.add_all(new_users) session.commit()
user = session.query(User).filter_by(name='Lucy').first() if user: user.age = 26 session.commit()
users = session.query(User).all() for user in users: print(user)
session.close()
### 操作手順4:test.pyファイルの実行
コマンドプロンプトまたはPowerShellターミナルを開き、`test.py`ファイルを実行してデータをクエリし、結果を出力します。
1. `test.py`ファイルがあるディレクトリに移動します。
**例は以下のとおりです:**
```shell
cd D:\demo\demo
```
2. `test.py`ファイルを実行します。
**例は以下のとおりです:**
```shell
python test.py
```
返される結果は以下のとおりです:
```shell
<User(id=1, name='John', age=20)>
<User(id=2, name='Lucy', age=26)>
<User(id=3, name='Tom', age=30)>
```
## エラー処理
SQLAlchemyを使用してOceanBase Cloudクラウドデータベースに接続する際、さまざまなエラーが発生する可能性があります。以下に、一般的なエラーとその処理方法を示します。
1. **接続エラー**:データベースに接続できない場合は、ホスト名、ポート、ユーザー名、パスワード、データベース名などの接続パラメータが正しいか確認してください。
2. **権限エラー**:権限に関連するエラーが発生した場合は、ユーザーが必要な操作を実行するための十分な権限を持っていることを確認してください。
3. **SQL構文エラー**:SQL文に構文エラーがある場合は、SQL文の構文が正しいか確認してください。
4. **データ型エラー**:挿入するデータ型がテーブル定義と一致しない場合は、挿入するデータ型が正しいことを確認してください。
コード内では、`try-except`文を使用してこれらのエラーをキャッチして処理し、エラー発生時にプログラムが直接クラッシュするのではなく、適切に処理できるようにすることができます。同時に、`logging`モジュールを使用してエラー情報を記録し、デバッグやトラブルシューティングを容易にすることができます。
## 関連情報
* OceanBase Cloudクラウドデータベースへの接続に関する詳細は、[接続方法の概要](../../../../../300.tp-instance/400.connect-instance-tp/100.mysql/100.connection-overview-mysql.md)をご参照ください。