LoginSignup
1
1

More than 1 year has passed since last update.

【はじめの一歩】OCIのMySQL Database Serviceをつかってみよう!(MDS+Python 他⑥):プレースホルダー使用のSELECT

Posted at

はじめに

講釈よりも、とにかく触りたい・使いたい初心者向け手順書テイスト
OCIのMDSをたてて、Python等で繋げて使ってみる。
今回はConnector/Pythonを利用しDBからのデータ取得の続きです。
更新系でもやったプレースホルダーを参照系でもやりましょう。
前提:OCIの有償アカウントであること(30日間無料トライアルの方もOKです)

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

本記事の・・・
OCI環境についてはMDS+Python 他①
DB構成についてはMDS+Python 他②
シンプルなデータ更新についてはMDS+Python 他③
プレースホルダーを使用したデータ更新についてはMDS+Python 他④
シンプルなデータ参照については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!」で上書き保存

前処理

前段で接続処理を記入します。
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)

プレースホルダー使用のSELECTクエリ

更新系と説明は同様です。セキュリティ向上にも役立ちますので
その理由に興味があれば調べてみましょう
では早速やっていきます。

プレースホルダー使用の参照処理
    cur = conn.cursor(buffered=True)
    sql_str = "SELECT * FROM commodity WHERE code > %s";
    cur.execute(sql_str, (1,))
    for row in cur:
        print(row)

後処理

後段で例外処理や切断処理を記入します。

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

実行結果

$ python P_SELECT.py 
(2, 'Py_リンゴ(10kg)', 4000, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(3, 'Py_ブドウ(3kg)', 5000, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(4, 'Py_ミカン(10kg)', 3000, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(5, 'Py_イワシ', 100, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(6, 'Py_アジ', 200, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(7, 'Py_サバ', 300, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(8, 'Py_サンマ', 400, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
(9, 'Py_マグロ', 900, None, datetime.datetime(2022, 6, 1, 2, 0, 14))
$ 

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

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

1
1
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
1
1