LoginSignup
0
0

More than 1 year has passed since last update.

【はじめの一歩】OCIのMySQL Database Serviceをつかってみよう!(MDS+Python 他③)

Posted at

はじめに

講釈よりも、とにかく触りたい・使いたい初心者向け手順書テイスト
OCIのMDSをたてて、Python等で繋げて使ってみる。
今回はConnector/Pythonを利用しDBへのデータ追加、更新、削除まで。
前提:OCIの有償アカウントであること(30日間無料トライアルの方もOKです)

本手順は、翔泳社の良書
MySQL徹底入門 第4版 MySQL 8.0対応を参考としています。
同書籍のサンプルファイルを活用します。
※サンプルファイルのReadMeに以下のありがたいお言葉があるので活用して効率化します。
「本書のサンプルデータは自由に利用できることとします。改変のほか、自由に利用、複製、再配布することができます。」

ただ、サンプルファイルの日本語部分は文字化けしているファイルがあるので、
そのまま使うのが難しい場合があります。
OCI環境については初回:MDS+Python 他①
DB構成については前回:MDS+Python 他②
をご確認ください。

前準備

・MDSの起動
・コンピュートの起動
・Cloud Shellの起動とコンピュートへのSSH接続

Cloud Shellからのssh接続
$ ssh -i 秘密キー パブリックIPアドレス -l opc
例:$ ssh -i ssh-key-2022-05-31.key 150.230.193.122-l opc

を行います。

PYファイルの作成

■pyファイル作成
$ vi ファイル名.py
ファイルが開かれたら「i」キーを押下した後、処理内容を記入し、「ESCキー → :(コロン) → wq!」で上書き保存

※ 「------- INSERT or UPDATE or DELETE -----------------」の前後に全処理共通の接続処理や例外処理を記入します。

mysql.connector.connectのカッコ内:user、password、host、databaseを自身の環境に合わせて編集

共通部分
import mysql.connector
from mysql.connector import errorcode

try:
    conn = mysql.connector.connect(user='mdsuser', password='Mdsp@ss01',
                                   host='10.0.1.51',
                                   database='mdstest', use_pure=True)
    conn.autocommit = True
    cur = conn.cursor()

------- INSERT or UPDATE or DELETE -----------------

except mysql.connector.Error as err:
    print("VendorError:", err.errno)
    print("SQLState:", err.sqlstate)
    print("SQLException:", err.msg)
else:
    cur.close()
    conn.close()

「------- INSERT or UPDATE or DELETE -----------------」の部分は以下の通り。

データの追加

INSERT
    sql_str = "INSERT INTO commodity (code,name,price) VALUES (\'1\',\'Py_トマト001\',\'100\')"
    cur.execute(sql_str)
    print("データを追加しました。")

データの更新

UPDATE
    sql_str = "UPDATE commodity  SET price=200 WHERE code=1";
    cur.execute(sql_str)
    print("データを更新しました。(price=100→200)")

データの削除

DELETE
    sql_str = "DELETE FROM commodity WHERE code=1";
    cur.execute(sql_str)
    print("データを削除しました。(code=1,delete)")

実行

実行
$ python ファイル名.py
$ mysql -u MDSのユーザー名 -p -h MDSのプライベートIPアドレス
例:$ mysql -u root -p -h 10.0.1.51
Enter password: 

mysql> use mdstest
mysql> SELECT * FROM commodity;
mysql> quit

INSERT実行
$ python INSERT.py 
データを追加しました。
$ 
<中略>
mysql> SELECT * FROM commodity;
+------+-----------------+-------+------------+---------------------+
| code | name            | price | start_date | last_update         |
+------+-----------------+-------+------------+---------------------+
|    1 | Py_トマト001    |   100 | NULL       | 2022-05-31 23:32:27 |
+------+-----------------+-------+------------+---------------------+
1 row in set (0.00 sec)
UPDATE実行
$ python UPDATE.py
データを更新しました。(price=100200
$
<中略>
mysql> SELECT * FROM commodity;
+------+-----------------+-------+------------+---------------------+
| code | name            | price | start_date | last_update         |
+------+-----------------+-------+------------+---------------------+
|    1 | Py_トマト001    |   200 | NULL       | 2022-05-31 23:32:27 |
+------+-----------------+-------+------------+---------------------+
1 row in set (0.00 sec)

mysql> 
DELETE実行
$ python DELETE.py 
データを削除しました。(code=1,delete)
$
<中略>
mysql> SELECT * FROM commodity;
Empty set (0.00 sec)

mysql> 

mysql>
今回は以上です。長文お付き合い頂き、ありがとうございました。

【重要】MDSは安価ですが、使わないのであれば、停止する、もしくは削除するのを忘れずに
    停止だけだと、ストレージは月単位で課金されます。
お片付け方法は、初回:MDS+Python 他① お片付けを参考にしてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0