mysql-connector-pythonを使ってみよう
本チュートリアルの内容
■ 開発環境 の確認
前提とする環境
このチュートリアルでは、以下の環境を想定します。
- 開発PC:Windows10 Professional、MySQL5.7、mysql-connector-python 8.0.29
- 開発環境: PyCharm 2021.3
開発の準備
開発に使用するMySQLはMySQLのページからダウンロードして、インストールする必要があります。以下のリンクでMySQLに関するチュートリアルをまず実施しましょう。
DBは、上のチュートリアルで作成したものを利用することとします。
次に、mysql-connector-pythonをインストールします。Pythonの実行環境は、このウェブの別のチュートリアルで解説をしているAnacondaを利用しているとして説明をします。
図 mysql-connector-pythonのインストール
インストールするのはPyCharmで使用するインタープリターで設定する環境になります。
■ PyCharmを使ってDB接続する
では、さっそく、PyCharmを立ち上げて、MySQLに接続してみましょう。PyCharmで、mysql_connectというプロジェクトを作成しましょう。
図 プロジェクトのスタート
次に、プログラムを作成します。先ほど作った、mysql_connectプロジェクトのフォルダでマウスを右クリックし、新規のpythonファイルの追加を選択します。
図 プログラムファイルの作成
クラスの設定画面では、以下のように、my_query.pyという名前のファイルを追加しました。
図 プログラムファイル名
次に、MySQLアクセスをするためのライブラリをインポートしておきます。
import mysql.connector
このままではインタープリターが先ほどmysql-connector-pythonをインストールした環境ではないので、エラーが出ていると思います。PyCharmの設定から正しい実行環境を選び直します。
図 インタープリターの選択
これで、先ほどまで出ていたエラーは消え、ライブラリが利用できるようになります。
では、実際のプログラミングに入ろう。クラスの中に次のようなコードを追加してみましょう。
def main(): connection = mysql.connector.connect( host='192.168.0.19', # 接続先 port='3306', user='picklog', # mysqlのuser password='p!cklog', # mysqlのpassword database='picklog_db', use_pure=True, ) # コネクション断時の再接続設定 connection.ping(reconnect=True) cur = connection.cursor() cur.execute("SELECT * from log_tbl") # 全データ取得 rows = cur.fetchall() # 結果の表示 for row in rows: print(row) # DB接続終了 cur.close() connection.close() if __name__ == '__main__': main()
ここで書いたコードについて、少しだけ解説をすると、connectionでは、接続するDBを定義しています。ここでは、前提としているMySQLのチュートリアルで作成した、DB(picklog_db)に接続しています。ユーザ名とパスワードもその際のものです。また、接続先として、サーバーが動いている端末のIPアドレスも指定しています。これは、チュートリアルを作成した環境のPCのアドレスです。
(ここで注意したいのは、MySQLの接続は、TCP3306番を使用しているので、ファイアウォール内の端末から、ファイアウォール外のサーバーに接続しようとしたり、あるいは、使用しているPCのセキュリティソフトが、3306ポートを遮断している場合には、接続ができなくなります)
カーソルをつかってSQLをハンドリングするので、curを定義しています。ここではexecuteメソッドを用いてSQL文を実行し、結果をfetchallメソッドですべて抽出しrowsタプルに格納しています。ここでは単純にrowsの中身をfor文で出力しています。最後に、DB接続をクローズして終了します。
では、実際にこのコードを動かしてみましょう。
図 プログラムの実行
すると、コンソール画面に以下のような検索結果が表示されると思います。
図 実行結果
無事にMySQLに接続できたのが確認できたでしょうか。
(ページの先頭へ)
■ 応用問題に挑戦してみよう
データの更新もやってみよう!
(ページの先頭へ)