pythonでpsycopg2を用いてyugabytedbのデータベース内にテーブルを作成する

pythonでpsycopg2を用いてyugabytedbのデータベース内にテーブルを作成してみます。

今回はpsycopg2を用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。また、今回はYugabyteDB Managed(https://www.yugabyte.com/managed/)の無料利用枠を利用し、事前にClusters,データベースを作成しています。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■仮想環境の構築

psycopg2を用いてyugabytedbのデータベース内にテーブルを作成しますが、その前に仮想環境の構築を行い、インストールを行います。そのために、まずはWindows10のコマンドプロンプトを起動します。

C:\Users\user_>mkdir yugabyte-test

起動後、上記のコマンドを入力し、Enterキーを押します。「mkdir」コマンドで「yugabyte-test」ディレクトリを作成します。

C:\Users\user_>cd yugabyte-test

作成後、上記のコマンドを入力し、Enterキーを押します。「cd」コマンドで「flask-auth」ディレクトリ内に移動します。

C:\Users\user_\yugabyte-test>py -3.8 -m venv .venv

移動後、上記のコマンドを入力し、Enterキーを押します。本来だと「python -m venv .venv」で仮想環境のディレクトリ「.venv」を作成しますが、今回はPythonのバージョンを指定しています。なお、今回仮想環境のディレクトリ名は「.venv」としていますが、ご自身で変更は可能です。

Enterキーを押すと、何も出力されませんが、これで仮想環境の作成が完了となります。

■仮想環境への切り替え

C:\Users\user_\yugabyte-test>.venv\Scripts\activate.bat

完了後、上記のコマンドを入力し、Enterキーを押します。仮想環境のディレクトリ内に作成された activateスクリプトを実行し、仮想環境に入ります。

(.venv) C:\Users\user_\yugabyte-test>

Enterキーを押すと、「(.venv)」と表示されます。これで仮想環境に入ることができました。

■psycopg2のインストール

(.venv) C:\Users\user_\yugabyte-test>pip install psycopg2

仮想環境に入った後に、上記のコマンドを入力し、Enterキーを押していきます。これでpipを経由してpsycopg2-yugabytedbをインストールします。

Collecting psycopg2
Using cached psycopg2-2.9.3-cp38-cp38-win_amd64.whl (1.1 MB)
Installing collected packages: psycopg2
Successfully installed psycopg2-2.9.3

Enterキーを押すと、上記のように「Successfully installed(正常にインストールされました)」と出力されます。これが出力されればインストールは完了となります。

■YugabyteDB Managedの設定

インストール後、YugabyteDB Managedの設定を行っていきます。YugabyteDB Managedのアカウントを取得後、Clustersの作成となります。

※なお、「DB CREDENTIALS」で表示されたadminとpasswordを含む「credentials」は重要な情報ですので保存しておいてください。

作成後、YugabyteDB Managedのダッシュボードが表示されます。

ダッシュボードの左メニューから「Clusters」をクリックすると、「Clusters」ページが表示されます。ページ内に「You can’t connect yet. In order to connect to your cluster using YugabyteDB Client Shell or an Application add an IP Allow List to this cluster.(まだ接続できません。YugabyteDBクライアントシェルまたはアプリケーションを使用してクラスタに接続するには、このクラスタにIP許可リストを追加してください。)」と表示されていますので、左側の「Add IP Allow List」ボタンをクリックします。

クリックすると、「Add IP Allow List」というポップアップが表示されます。ポップアップ内の「Create New List and Add to Cluster(新しいリストを作成し、クラスタに追加する)」ボタンをクリックします。

クリックすると、入力フォームが表示されますので、「NAME」に新しいリストの名前を入力します。今回は「myipaddress」とします。次に「DESCRIPTION (OPTIONAL)」でリストの説明文を入力します。今回はこの項目はオプションなので、説明文がなくても問題ないので、入力しません。その後「IP ADDRESS(ES) OR CIDR RANGE」で、追加するIPアドレスまたはCIDR範囲を入力します。今回は「Detect and add my IP to this list(私のIPを検出し、このリストに追加する)」というリンクをクリックします。これで貴方のIPを自動的に検出し追加します。最後に「Save」ボタンをクリックします。

クリックすると、「Adding cluster allow list. This may take up to a minute.(クラスタの許可リストを追加します。これは1分ほどかかるかもしれません。)」と表示されます。これでCluster に接続できるようになりました。

Clusterの許可リストを追加した後は、「Cluster」ページ内の作成したClusterの「connect」ボタンをクリックします。

クリックすると「Connect to Cluster」というウインドウが表示されます。ウインドウ内の「Connect to your Application」を選択します。

選択すると「Connect to your Application」が表示されますので、まずは「Download the CA certificate to connect securely to the cluster(not required for Hasura Cloud)(クラスタに安全に接続するためのCA証明書のダウンロード(Hasura Cloudの場合は不要))」と書かれていますので、「Download CA Cert」をクリックします。

クリックすると、今回はWebブラウザをGoogleChromeに指定し使用しましたが、Chromeの下部に「この種類のファイルはコンピュータに損害を与える可能性があります。root.crtのダウンロードを続けますか?」と表示されますので、「保存」ボタンをクリックします。

クリックすると、Webブラウザで指定されている保存場所に「root.crt」というファイルが保存されます。

保存後、このファイルを今回はわかりやすいように「C:\Users\user_\test(フォルダパス)」に移動させておきます。

移動後、「Connect to your Application」内の「Use the following parameters to connect to your cluster(以下のパラメータを使用して、クラスターに接続します。)」を確認します。今回は特に「YSQL」の「Parameters」の情報を使いますので、この情報をコピーしておきます。これでYugabyteDB Managedの設定とClusterの接続準備は完了となります。

■psycopg2を用いてyugabytedbのデータベース内にテーブルを作成する

完了後、「yugabyte-test」ディレクトリ内にpsycopg2を用いてyugabytedbのデータベース内にテーブルを作成するスクリプトファイルを作成し、中身のコードを書いていきます。

■コード

import psycopg2

conn = psycopg2.connect(dbname='データベース名',host='ホスト名',port='5433',user='データベースのユーザー名(初期設定の場合はadmin)',password='Cluster作成時にCREDENTIALSとして発行されたpassword',sslmode="verify-full",sslrootcert=r"「root.crt」が置かれている場所")
cur = conn.cursor()

cur.execute(
  """
  CREATE TABLE test_1 (id int PRIMARY KEY,
                         name varchar,
                         age int,
                         language varchar)
  """)
print("test_1というテーブルを作成しました")
cur.close()

今回はスクリプトファイルの名前を「db_test.py」とし、上記のtest_1というテーブルが作成されるコードを記述し、保存します。

■実行・検証

保存後、コマンドプロンプトから仮想環境に入り、スクリプトファイルを実行してみます。

実行してみると、「test_1というテーブルを作成しました」と出力されました。

出力後、YugabyteDB Managedのダッシュボードで、作成したClustersを選択し「Tables」タブをクリックします。クリックすると、作成したtest_1というテーブルを確認することができました。

コメント

タイトルとURLをコピーしました