【 Python 】mysql-connector-pythonでMySQLにアクセスしよう!

当ページのリンクには広告が含まれています。

今回はPythonからMySQLデータベースに接続し、データを更新したり取得する方法について解説します。

MySQL は無料で使える本格的なデータベースであり、商用利用も盛んにされていますので、仕事で必要に迫られるケースも多いと思います。

少し前までは mysqlclient が有名でしたが、Windowsではサポートされなくなっており、2024年9月においては
mysql-connector-python がよく使われています。

そこで、本記事では Windows上で mysql-connector-python を使って PythonからMySQLに接続する方法を、サンプルソース付きで解説致します。

【 コピペでOK】9割の機能を網羅!PytonからMySQLを扱うクラスを作ってみました。」では、本記事の内容をもとに、MySQLで便利な自作クラスを紹介していますので、興味のある方は併せてご覧ください。

あわせて読みたい
【 コピペでOK】9割の機能を網羅!PytonからMySQLを扱うクラスを作ってみました。 【 Python 】mysql-connector-pythonでMySQLにアクセスしよう!の記事では、Python から MySQLに接続するための方法について解説しました。 https://resanaplaza.com/20...
目次

mysql-connector-python インストール

コマンドプロンプトから、pipコマンドで mysqlclientをインストールします。

pip install mysql-connector-python

mysql-connector-pythonの概要

SQLやDDLを実行するための手順は、SQLite、Oracle、PostgreSQL など多くのデータベースと同様です。

尚、インストールは mysqlclient ですが、 import は MySQLdb なのでご注意ください。

 

mysql-connector-pythonの使い方

MySQL への接続

MySQLへの接続には、mysql.connector.connect メソッドに接続に必要な接続情報を引数として渡します。
また、処理が終れば close() メソッドを使って接続を切断しておきます。

引数名内容補足説明
hostサーバー名IPアドレス(例:192.168.0,110) 又はホスト名(例:'hoge')
databaseデータベース名
userユーザー名
passwordパスワード
portポート番号省略時は3306が採用

他のDatabaseでは、接続文字列(接続情報を繋げて1つの文字列にしたもの)が使えるものも多いですが、
mysql-connector-pythonは接続文字列をサポートしていません。

テーブルの作成と削除

テーブルの作成や削除、インデックスの追加、カラム名の変更など、いわゆる定義系のSQL(DDL=Data Definition Language)は、execute メソッドを使います。

execute メソッドを使うには、DBに接続後にカーソルを取得する必要があるため、結果的に下記の様になります。

例えば、新しいテーブルを作成する場合は、次のように記述します。

テーブルを削除する場合は、sql_statement を次の内容に変更します。

データの挿入と更新

データを挿入する場合も基本的にはDDLと同じく、execute メソッドを使います。
異なるのは、データの更新を確定させるために、commitメソッドを呼ぶ必要があることです。これをしないと、いくらテーブルを更新しても結果が反映されません。

executeの引数を update文 に換えると、指定した条件のデータを更新(アップデート)できます。

検索(Select)と結果の取得

データを検索する場合も同様、execute メソッドを使います。
また、fetchall メソッドを使って検索結果を受け取ります。

fetchall は検索結果を全てメモリに読み込むため、大量のデータを受け取る場合はメモリ不足のエラーが発生します。
そのため、検索結果を1件づつ読み出す fetchoneメソッドや、指定した件数毎に結果を受け取れる fetchmanyメソッドが用意されています。

機能メソッド備考
全件取得fetchall()リスト形式で全件を返す。
1件づつ取得fetchone()データがあれば1件をタプル形式で返す。
データが無くなれば None を返す。
指定件数づつ取得fetchmany(件数)データがあれば指定件数づつタプル形式で返す。
データが無くなれば None を返す。

以下は、fetchmany を使ったサンプルです。2件づつデータを読み取りながらループしていますが、書き方が2通りあるため、参考に載せておきます。

まとめ

今回は Python を使って MySQL に接続するために必要な mysql-connector-python のインストール方法 と、 MySQL に接続した後にデータの抽出や更新を行うための簡単なサンプルを紹介しまた。

Pythonのデータベース接続は、データベースの種類によってコネクションの部分が多少異なるものの、接続後の手順は同じです。

この記事がPythonで MySQL に接続するための参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次